2012-01-18 24 views
8

Obecnie mam ustawienie tekstu i tła dla części łańcucha przy użyciu SpannableString tak:Dodawanie wielu stylów naraz do SpannableString

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

Czy jest jakiś sposób na połączenie obu tych stylów w jednym CharacterStyle obiekt i ustawić go na tekst w jednym poleceniu?

Odpowiedz

8

Jeśli ostatecznie chcesz ustawić tekst w TextView (lub coś podobnego), można wykorzystać SpannableString formatować każdy ciąg oddzielnie i używać TextUtils.concat załatać je razem, co eliminuje potrzebę SpannableStringBuilder.

Poniższy kod ustawił tekst w TextView na "Hello World", gdzie "Hello" jest czerwony, a "World" jest zielony.

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)); 
Powiązane problemy