2013-06-08 10 views
8

Come faccio a implementare qualcosa di simile:TextView con il colore di sfondo solo sul testo stesso

enter image description here

voglio farlo all'interno di un singolo TextView. L'impostazione del colore di sfondo di TextView non farà il lavoro.

Suppongo che dovrebbe essere possibile con un adulto, ma non so come.

in HTML dovrei farlo:

<html> 
<body> 
     <span style="background:#CCCCCC;">first line <br /> second long line </span> 
</body> 
</html> 

Ma io non so come fare su Android. L'ultima opzione sarebbe quella di dividere il testo in due viste di testo e impostare ogni colore di sfondo con le immagini di testo e con/height per wrap_content. Ma dal momento che il testo lunghezza/conteggio delle parole può essere dinamicamente, ho bisogno di calcolare la lunghezza di ogni parola, ecc Ci deve essere un modo migliore :)

risposta

12

qualcosa come questo dovrebbe fare il lavoro

String myString = "first line\nsecond long line"; 
Spannable spanna = new SpannableString(myString); 
spanna.setSpan(new BackgroundColorSpan(0xFFCCCCCC),0, myString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
myTextView.setText(spanna); 

se ti piace tenerlo in html puoi usare uno WebView e caricare il tuo html lì, lo styling dovrebbe essere più semplice con css, penso che

+1

Questo è esattamente quello che stavo cercando! Grazie! Qualche idea su come aggiungere una sorta di padding a BackgroundColorSpan? – sockeqwe

+0

scusa non so se è possibile avere una vera imbottitura su spannabile, le uniche cose che riesco a capire è ingrandire la stringa con spazi xD – lelloman

+0

sì, aggiungere spazi bianchi è la mia soluzione attuale: D Non è il massimo soluzione elegante, ma fa il lavoro! Grazie mille! – sockeqwe

Problemi correlati