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











网友评论