2012-01-18 32 views
8

目前,我正在使用SpannableString像這樣設置文本和背景顏色爲字符串的一部分:一次添加多個樣式SpannableString

SpannableStringBuilder spanString = new SpannableStringBuilder(text); 
spanString.setSpan(new ForegroundColorSpan(Color.RED), start, end, 0); 
spanString.setSpan(new BackgroundColorSpan(Color.GRAY), start, end, 0); 

有沒有辦法既這些樣式合併成一個CharacterStyle對象並將其設置爲一個命令中的文本?

回答

8

如果你最終想要設置的TextView(或類似的東西),你可以使用SpannableString每串分別格式化並使用TextUtils.concat修補他們在一起,這消除了對SpannableStringBuilder需要的文本。

下面的代碼設置文本在TextView爲「Hello World」,其中「你好」是紅色的「世界」是綠色的。

TextView myTextView = new TextView(this); 
SpannableString myStr1 = new SpannableString("Hello"); 
SpannableString myStr2 = new SpannableString("World"); 
myStr1.setSpan(new ForegroundColorSpan(Color.RED), 0, myStr1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
myStr2.setSpan(new ForegroundColorSpan(Color.GREEN), 0, myStr2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
myTextView.setText(TextUtils.concat(myStr1, " ", myStr2));