SpannableStringBuilder用法
先说下SpannableString与SpannableStringBuilder的区别:
SpannableStringBuilder可以说是String性能的扩展,也可理解为变异的String,只是它们可以对这些字符串添加额外的样式信息,但String则不行,如加下划线、加背景色、改变字体颜色、用图片把指定的文字给替换掉等。
区别在于 SpannableString构造对象的时候传入一个String,之后再无法更改String的内容,也无法像SpannableStringBuilder那样, 可以通过其append()方法来拼接多个String。
一个核心方法:setSpan (Object what, int start, int end, int flags);
参数说明:
object what :对应的各种Span,后面会提到;
int start:开始应用指定Span的位置,索引从0开始;
int end:结束应用指定Span的位置(效果范围:前包后不包);
int flags:取值有四个:
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范围的前面和后面“新插入”字符都不会应用新样式
Spannable.SPAN_EXCLUSIVE_INCLUSIVE :前面不包括,后面包括。即仅在范围字符的后面“新插入”字符时会应用新样式
Spannable.SPAN_INCLUSIVE_EXCLUSIVE :前面包括,后面不包括。
Spannable.SPAN_INCLUSIVE_INCLUSIVE : 前后都包括。
what可设置的span有很多如下:
1、BackgroundColorSpan 背景色
2、ClickableSpan 文本可点击,有点击事件
3、ForegroundColorSpan 文本颜色(前景色)
4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
5、MetricAffectingSpan 父类,一般不用
6、RasterizerSpan 光栅效果
7、StrikethroughSpan 删除线(中划线)
8、SuggestionSpan 相当于占位符
9、UnderlineSpan 下划线
10、AbsoluteSizeSpan 绝对大小(文本字体)
11、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。
12、ImageSpan 图片