SPAN 的使用详解
来源:互联网 发布:r语言的图和python 编辑:程序博客网 时间:2024/06/07 03:17
package com.example.spantext;import android.app.Activity;import android.graphics.BlurMaskFilter;import android.graphics.BlurMaskFilter.Blur;import android.graphics.Color;import android.graphics.EmbossMaskFilter;import android.graphics.Typeface;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.text.Spannable;import android.text.SpannableString;import android.text.SpannableStringBuilder;import android.text.Spanned;import android.text.method.LinkMovementMethod;import android.text.style.AbsoluteSizeSpan;import android.text.style.BackgroundColorSpan;import android.text.style.ForegroundColorSpan;import android.text.style.ImageSpan;import android.text.style.MaskFilterSpan;import android.text.style.StrikethroughSpan;import android.text.style.StyleSpan;import android.text.style.URLSpan;import android.text.style.UnderlineSpan;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener { private TextView tv; private Button underline_btn; private Button strike_btn; private Button style_btn; private Button font_btn; private Button color_btn1; private Button color_btn2; private Button url_btn; private Button image_btn; private Button maskfilte_btn; private Button Rasterizer_btn; private Button spannablestringbuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) this.findViewById(R.id.tv); underline_btn = (Button) this.findViewById(R.id.underline_btn); strike_btn = (Button) this.findViewById(R.id.strike_btn); style_btn = (Button) this.findViewById(R.id.style_btn); font_btn = (Button) this.findViewById(R.id.font_btn); color_btn1 = (Button) this.findViewById(R.id.color_btn1); color_btn2 = (Button) this.findViewById(R.id.color_btn2); url_btn = (Button) this.findViewById(R.id.url_btn); image_btn = (Button) this.findViewById(R.id.image_btn); maskfilte_btn = (Button) this.findViewById(R.id.maskfilte_btn); Rasterizer_btn = (Button) this.findViewById(R.id.Rasterizer_btn); spannablestringbuilder = (Button) this.findViewById(R.id.spannablestringbuilder); underline_btn.setOnClickListener(this); strike_btn.setOnClickListener(this); style_btn.setOnClickListener(this); font_btn.setOnClickListener(this); color_btn1.setOnClickListener(this); color_btn2.setOnClickListener(this); url_btn.setOnClickListener(this); image_btn.setOnClickListener(this); maskfilte_btn.setOnClickListener(this); Rasterizer_btn.setOnClickListener(this); spannablestringbuilder.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.underline_btn: addUnderLineSpan(); break; case R.id.strike_btn: addStrikeSpan(); break; case R.id.style_btn: addStyleSpan(); break; case R.id.font_btn: addFontSpan(); break; case R.id.color_btn1: addForeColorSpan(); break; case R.id.color_btn2: addBackColorSpan(); break; case R.id.url_btn: addUrlSpan(); break; case R.id.image_btn: addImageSpan(); break; case R.id.maskfilte_btn: addmaskfilteSpan(); break; case R.id.Rasterizer_btn: addRasterizerSpan(); break; case R.id.spannablestringbuilder: addspannablestringbuilderSpan(); break; } } /** * spannablestringbuilder */ private void addspannablestringbuilderSpan() { SpannableStringBuilder ss=new SpannableStringBuilder("红色超链接斜体删除线绿色下划线图片:."); //用颜色标记文本 ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, //setSpan时需要指定的 flag,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括). Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //用超链接标记文本 ss.setSpan(new URLSpan("tel:4155551212"), 2, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //用样式标记文本(斜体) ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //用删除线标记文本 ss.setSpan(new StrikethroughSpan(), 7, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //用下划线标记文本 ss.setSpan(new UnderlineSpan(), 10, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //用颜色标记 ss.setSpan(new ForegroundColorSpan(Color.GREEN), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //获取Drawable资源 Drawable d = getResources().getDrawable(R.drawable.ic_launcher); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); //创建ImageSpan ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); //用ImageSpan替换文本 ss.setSpan(span, 18, 19, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.setText(ss); tv.setMovementMethod(LinkMovementMethod.getInstance()); //实现文本的滚动 } /* * Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范围的前面和后面插入新字符都不会应用新样式 * Spannable.SPAN_EXCLUSIVE_INCLUSIVE :前面不包括,后面包括。即仅在范围字符的后面插入新字符时会应用新样式 * Spannable.SPAN_INCLUSIVE_EXCLUSIVE :前面包括,后面不包括。 * Spannable.SPAN_INCLUSIVE_INCLUSIVE :前后都包括。 */ /** * 光栅效果 */ private void addRasterizerSpan() { SpannableString spanText = new SpannableString("StrikethroughSpan"); spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable. SPAN_INCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanText); } /** * 修饰效果 */ private void addmaskfilteSpan() { SpannableString spanText = new SpannableString("benzlocke6666666"); int length = spanText.length(); //模糊(BlurMaskFilter) MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER)); spanText.setSpan(maskFilterSpan, 0, length - 10, Spannable. SPAN_INCLUSIVE_EXCLUSIVE); //浮雕(EmbossMaskFilter) maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3)); spanText.setSpan(maskFilterSpan, length - 10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanText); } /** * 超链接 */ private void addUrlSpan() { SpannableString spanString = new SpannableString("超链接"); URLSpan span = new URLSpan("tel:0123456789"); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanString); tv.setMovementMethod(LinkMovementMethod.getInstance()); } /** * 文字背景颜色 */ private void addBackColorSpan() { SpannableString spanString = new SpannableString("文字背景颜色"); BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW); spanString.setSpan(span, 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanString); } /** * 文字颜色 */ private void addForeColorSpan() { SpannableString spanString = new SpannableString("文字颜色"); ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE); spanString.setSpan(span, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanString); } /** * 字体大小 */ private void addFontSpan() { SpannableString spanString = new SpannableString("36号字体"); AbsoluteSizeSpan span = new AbsoluteSizeSpan(36); spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanString); } /** * 粗体,斜体 */ private void addStyleSpan() { SpannableString spanString = new SpannableString("ABCDEF"); StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanString); } /** * 删除线 */ private void addStrikeSpan() { SpannableString spanString = new SpannableString("删除线"); StrikethroughSpan span = new StrikethroughSpan(); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanString); } /** * 下划线 */ private void addUnderLineSpan() { SpannableString spanString = new SpannableString("下划线"); UnderlineSpan span = new UnderlineSpan(); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append("\n"); tv.append(spanString); } /** * 图片 */ private void addImageSpan() { SpannableString spanString = new SpannableString(" "); Drawable d = getResources().getDrawable(R.drawable.ic_launcher); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // tv.append("\n"); tv.append(spanString); tv.append("liaoli"); }}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.spantext.MainActivity" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text=" " /> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <Button android:id="@+id/underline_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="underline_btn" /> <Button android:id="@+id/strike_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="strike_btn" /> <Button android:id="@+id/style_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" style_btn" /> <Button android:id="@+id/font_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="font_btn" /> <Button android:id="@+id/color_btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="color_btn1 " /> <Button android:id="@+id/color_btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" color_btn2" /> <Button android:id="@+id/url_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="url_btn" /> <Button android:id="@+id/image_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="image_btn" /> <Button android:id="@+id/maskfilte_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="maskfilte_btn" /> <Button android:id="@+id/Rasterizer_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Rasterizer_btn" /> <Button android:id="@+id/spannablestringbuilder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="spannablestringbuilder" /> </LinearLayout> </ScrollView></LinearLayout>
效果:
0 0
- SPAN 的使用详解
- Android TextView Span的使用详解
- Android之TextView的样式类Span的使用详解
- Android Span 的使用
- span标签的使用技巧
- Span使用之系统提供的Span基本样式
- div和span元素的使用区别
- Div span 标签详解
- html span标签详解
- jQuery设置和获取span的内容 (详解)
- Span使用之利用系统Span样式实现模糊搜索,匹配变色的特殊UI效果
- span代码使用教程
- 使用span或div模拟Select的水平滚动条
- HTML中级教程 - 1.关于“Span”和“Div”的使用
- HTML使用<span>和<div>布局中遇到的问题
- span设置值、获取span 的值
- span的用法
- SPAN的高度问题
- 判断大小端
- THREE SUM
- 步进电机单双脉冲
- SyntaxError: Unexpected token ILLEGAL
- oVirt & Openstack
- SPAN 的使用详解
- H5 WebGL Demo 例子
- altium designer 原理图无变化更新PCB时却反复删除添加元器件的处理方法
- 如何通过DOM对象,来解析xml
- 网页设计课程之《”信息中心”网站的搭建》-网站布局和实现(二)
- 242. Valid Anagram
- Sonatype Nexus安装
- 二叉树的基本遍历算法
- Scroller