SpannableStringBuilder 笔记
在学习富文本的过程中发现了这个知识点。SpannableStringBuilder
实现了CharSequence
接口,用法类似StringBuilder
。可以为其包含的字符串设置样式。在设计自定义Label时会很实用。
需要注意的是,虽然其可以直接作为参数放入TextView中,不过由于Canvas
并不适配这个类,所以在其中使用这个类等同于使用普通的字符串。
关键方法
-
void setSpan(Object what, int start, int end, int flags)
-
SpannableStringBuilder append(CharSequence text, Object what, int flags)
实际上两个方法类似,都需要一个参数what
和flags
。方法1的剩余参数分别为需要设置的字符起点、终点。这没啥好说的,跟substring
的那两个参数一样。方法2就不必说了,现在说说共有的两个参数
what
是一个Span
类型的参数,用于确定现在的样式。是整个方法的关键。flags
参数用于确定样式的作用范围。该参数需求以下四个常量值:
- Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:仅仅作用于当前选中范围内
insert()
的字符串 - Spannable.SPAN_EXCLUSIVE_