在Android
中,有时候需要对一串文本中部分文本进行各种特别的设置,比如颜色、大小、首行缩进,或者是在一段文本中加入图片, 甚至是书写一些特殊的公式。 如果通过布局文件使用多个控件来实现,那么布局会特别的复杂,增加了布局文件维护的难度,并且加入了太多的控件,在页面加载时也要耗费更多的资源。 用Spannable
和Span
来实现将非常容易。
在HTML里有span
元素。span
元素用来展示文本的,而且是行内元素。
Android
中的Span
就是借鉴了HTML里有span
元素的特性。用它来实现富文本特效。
Spannable
的类结构图:
可以看出,Spannable
接口继承自Spanned
接口,Spanned
又继承自CharSequence
接口。
在TextView
的setText(CharSequence text)
方法中,要求的参数正好是一个CharSequence
的实例,CharSequence
的子接口或者子类的实例都可以传入。
下面是构造Spannable
的实例:
Spannable spannable = new SpannableString("字符串");
Spannable spannable = SpannableString.valueOf("字符串");
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder("字符串");
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder("字符串",0, 3);
SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf("字符串");
在构建出了Spannable
对象以后,就可以使用spannable.setSpan(Object span, int start, int end, int flags)
方法来进行样式的设置了。
start
则是该样式开始的位置。
end
对应的是样式结束的位置。
flags
是定义在Spannable
中的常量,常用的有:
span
是具体样式。
span
的类结构图: