2012-01-18 5 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); 

は1 CharacterStyleにこれらのスタイルの両方を結合する方法はありますオブジェクトを1つのコマンドでテキストに設定しますか?

答えて

8

あなたが最終的にTextView(または似たような)のテキストを設定する場合は、個別に各文字列をフォーマットし、SpannableStringBuilderの必要性を除去する、それらを一緒にパッチを適用するTextUtils.concatを使用するSpannableStringを使用することができます。

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)); 
関連する問題