2012-01-18 26 views
8

Attualmente, sto impostando i colori di testo e sfondo per una parte di stringa utilizzando SpannableString in questo modo:Aggiungere stili multipli in una sola volta per SpannableString

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

Esiste un modo per combinare entrambi questi stili in un unico CharacterStyle oggetto e impostarlo in un unico comando?

risposta

8

Se in ultima analisi desidera impostare il testo di una TextView (o qualcosa di simile), è possibile utilizzare SpannableString per formattare ogni stringa separatamente e utilizzare TextUtils.concat di patch insieme, che elimina la necessità di un SpannableStringBuilder.

Il seguente codice imposta il testo nel TextView in "Hello World" dove "Ciao" è rosso e "Mondo" è verde.

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)); 
Problemi correlati