2012-09-26 9 views
8

Questo è un esempio.Come creare un testo multi spanning?

String source = "This is example text"; 
Spannable out = new SpannedString(source); 
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD); 
out.setSpan(boldSpan, 1, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
out.setSpan(boldSpan, 9, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

//someTextView.setText(out); 


Risultato atteso: T hi s è posta XAM PLE testo ("hi" & "XAM" sono evidenziate in grassetto)
Risultato effettivo:         Questo è e pio ple testo (funziona solo l'ultimo metodo setSpan e grassetto è solo "xam")


Come creare testo multi spanning? È possibile?
Forse il problema è nel Spannable.SPAN_EXCLUSIVE_EXCLUSIVE flag? Grazie.

risposta

20

Penso che sia necessario un nuovo StyleSpan per ciascuno.

String source = "This is example text"; 
Spannable out = new SpannedString(source); 
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD); 
StyleSpan boldSpan2 = new StyleSpan(Typeface.BOLD); 
out.setSpan(boldSpan, 1, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
out.setSpan(boldSpan2, 9, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Tuttavia, non ho provato.

+0

Grazie. Funziona :) – user1523690

+0

Nessun problema. Felice di sentirlo. :) Accetta la risposta per favore se sei soddisfatto della mia soluzione. – MillyMonster

+0

Non ho ancora avuto questo problema, stavo solo guardando felicemente le domande ... Ma anche questo mi avrebbe bloccato. – WORMSS

0

Il motivo è che ogni testo in grassetto può essere rappresentato da un StyleSpan. Il motivo per il tuo è lo stesso della riassegnazione di un valore.

Problemi correlati