最近嘗試在Android程序中使用了SpannableString以及SpannableStringBuilder咬扇,簡單來說就是為字符串加上富文本格式甲葬,包括設(shè)置指定文字的格式,添加圖片和超鏈接等懈贺。
網(wǎng)上有很多Spannable相關(guān)的文章記錄與描述经窖,詳細(xì)的用法這里也不再贅述。
記錄幾點心得如下梭灿。
- 同一個Spannable對象只能設(shè)置從start到end兩個位置之間的文字之間的位置画侣,如果我們重新去對這個Spannable對象SetSpan,設(shè)置另外的start和end的序號堡妒,那么他的效果就會移動到新的位置配乱,而不是在兩個位置都包含富文本格式。
- 設(shè)置進(jìn)TextView的SpannableString需要保存引用,如果用TextView的getText去獲得數(shù)據(jù)搬泥,再New一個SpannableString出來桑寨,很顯然是不同的東西,對其操作再扔回TestView的時候會出現(xiàn)問題忿檩。之后有時間應(yīng)該要寫一個Testbed再詳細(xì)研究一下尉尾。
- 在一個SpannableString對象中,如果包含了大量的Spannable格式對象的話燥透,當(dāng)TextView調(diào)用onDraw去繪制它的時候沙咏,會花費(fèi)大量的時間。如果我需要實時修改一個Spannable班套,再讓這個TextView繪制新的內(nèi)容的時候肢藐,響應(yīng)速度變的難以接受了。在Stackoverflow上看到有人提到吱韭,只有重寫TextView的OnDraw窖壕,才能提高速度。這一個問題也需要再詳細(xì)研究一下杉女。
以上。