前言
Android提供了Span架构 支持文本丰富的样式及排版实现,本文介绍的Spanned Spannable接口便是该架构的重要部分,接口支持了对字符串增加标记对象的能力,使Span架构能根据标记对象对字符串样式做额外支持。
UML图
-
CharSequence
java接口,定义一个可读字符序列,常用的String
,StringBuilder
都实现来该接口。 -
Spanned
android上扩展了CharSequence
接口,表示可标记文本对象,主要定义getSpan*
相关方法,主要实现类是SpannedString
。 -
Spannable
扩展了Spanned
接口,增加了修改Span
对象的方法,所以Spannable
对象是可以修改内部文本的标记对象的,比如SpannableString
类。 -
Editable
android增加的表示可编辑文本的接口,继承于Spannable
,所以它既可以编辑Span
,又可以编辑文本,系统提供了SpannableStringBuilder
实现类。
从上面可以看到不同的场景适用的Spanned对象是不同的,所以我们要根据具体现场选择合适的类适用。其中,SpannableString
和SpannableStringBuilder
的区别类似于String
和StringBuilder
,是否可以修改内部文本。另外,这些实现类都提供了static valueOf(CharSequence)
方法方便的将一个CharSequence
对象转换为相应的Spanned
对象.。