最近尝试在Android程序中使用了SpannableString以及SpannableStringBuilder,简单来说就是为字符串加上富文本格式,包括设置指定文字的格式,添加图片和超链接等。
网上有很多Spannable相关的文章记录与描述,详细的用法这里也不再赘述。
记录几点心得如下。
- 同一个Spannable对象只能设置从start到end两个位置之间的文字之间的位置,如果我们重新去对这个Spannable对象SetSpan,设置另外的start和end的序号,那么他的效果就会移动到新的位置,而不是在两个位置都包含富文本格式。
- 设置进TextView的SpannableString需要保存引用,如果用TextView的getText去获得数据,再New一个SpannableString出来,很显然是不同的东西,对其操作再扔回TestView的时候会出现问题。之后有时间应该要写一个Testbed再详细研究一下。
- 在一个SpannableString对象中,如果包含了大量的Spannable格式对象的话,当TextView调用onDraw去绘制它的时候,会花费大量的时间。如果我需要实时修改一个Spannable,再让这个TextView绘制新的内容的时候,响应速度变的难以接受了。在Stackoverflow上看到有人提到,只有重写TextView的OnDraw,才能提高速度。这一个问题也需要再详细研究一下。
以上。