spanable

TextView的日常使用技巧

断了今生、忘了曾经 提交于 2019-12-07 11:12:28
Textview 在日常开发工作中使用非常频繁,在这里简单总结一下其比较重要的用法。目标是设置textview的中一段文字的显示属性,例如指定文字要下划线显示(@XXX、#XXX#),文字替换成图片,文字加重、变色、变大等。 实现的基本思路都是将指定的文字找出来,然后用实现Spananble接口的子类覆盖,即可。 Spananble只是一个接口,它的继承关系是:Spananble->Spanned->CharSequence 因为Spannable继承于CharSequence接口,因而,TextView可以直接setText,Spannable的实现类:Editable, SpannableString, SpannableStringBuilder 。 Spannable中有提供public abstract void setSpan (Object what, int start, int end, int flags) 方法,来设置被替换部分要显示的样式 其中参数Object what 又必须是 android.text.style.CharacterStyle 的实现子类,就是它决定显示的样式,例如实现下划线的UrlSpan,实现改变字体颜色的ForegroundColorSpan,实现改变字体大小的AbsoluteSizeSpan,实现替换成图片的ImageSpan等