它常和TextView连用,用于在同一段文字中进行不同的操作、显示。主要是通过setSpan()方法进行操作。参考:http://hunankeda110.iteye.com/blog/1420470
setSpan(Object what, int start, int end, int flags):第二个参数指字符串中起始字符的下标,第三个参数是结束下标。第四个参数表示起始、终止下标是否包含在内,它的取值为SpannableString.SPAN_*。
setSpan()第一个参数虽然是Object类型的,但是一般取CharacterStyle、ParagraphStyle、TextWatcher与SpanWatcher的子类。
1,ForegroundColorSpan:设置字体颜色。
2,ClickableSpan:设置文字点击,重写其中的onClick()并在onClick()中处理点击事件。使用该类时,相应的TextView必须设置setMovementMethod(LinkMovementMethod.getInstance())。在默认时,可点击部分有下划线,或者想自定义点击事件,只需要重写ClickableSpan中的两个方法即可,如下:
@Override public void onClick(View widget) {//自定义点击事件的处理 ToastUtils.toastDebug("clik", LoginActivity.this); } @Override public void updateDrawState(TextPaint ds) { ds.setColor(Color.RED);//设置可点击文件的颜色 ds.setUnderlineText(false);//设置是否有下划线 }第一个方法为自定义点击事件的处理。其余的见注释。
3,URLSpan:打开网页或者打电话等。它是ClickableSpan的子类,自己处理了点击事件,源码如下:
@Override public void onClick(View widget) { Uri uri = Uri.parse(getURL()); Context context = widget.getContext(); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); context.startActivity(intent); }从中可以看出它是打开了新的activity。使用时也需要setMovementMethod(LinkMovementMethod.getInstance())。
4,StyleSpan:字体样式,如用来设置字体加粗倾斜等。构造方法为StyleSpan(Typeface.*)。
5,BackgroundColorSpan:设置指定区域的背景色。
6,ImageSpan:图片。常用来在文字某一地方旋转一图片,形成类似于文字环绕的效果。此方法有一弊端:图片的宽高没办法修改,而且图片只占一行。示例如下:
TextView tv = (TextView) findViewById(R.id.tv_title); SpannableString ss = new SpannableString( "人生fd1243a这是fafda本项目是一个模仿Android微信、云播雷达扫描动画效果的小例子,点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友可以自己下载看一下,因为是动画效果所以截的静态图有点变形,项目编译版本4.4.2默认编码GBK 源码包下载地址以及运行截图。 【点击这里】fdsafsdafdasfsdfdsf"); ss.setSpan(new ImageSpan(this, R.drawable.ic_launcher), ss.length() / 2 - 30, ss.length() / 2 - 10, SpannableString.SPAN_INCLUSIVE_INCLUSIVE); tv.setText(ss);
7,AbsoluteSizeSpan:设置字体的绝对大小。 如果无第二个参数或者第二个参数为false,那么一个参数的单位是px;否则为dp。
8,TyepfaceSpan(Typeface.*):设置字体样式。如:粗体、斜体等
9,RelativeSizeSpan:设置字体的相对大小。设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍
10,UnderlineSpan:下划线
11,StrikethroughSpan:删除线
12,SuperscriptSpan:上标;SubscriptSpan:下标
13,ScaleXSpan:字体在x轴上拉伸多少倍