一次向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对象,并将其设置为一个命令中的文本?

Solutions Collecting From Web of "一次向SpannableString添加多个样式"

如果您最终想要设置TextView (或类似的东西)的文本,可以使用SpannableString设置每个string的格式,并使用TextUtils.concat将它们SpannableStringBuilder在一起,这样就不需要使用SpannableStringBuilder

下面的代码将TextView的文本设置为“Hello World”,其中“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));