2012-04-13 20 views

Antwort

79

Sie können Spannable verwenden, um zu erreichen, was Sie wollen.

String text = "This is <font color='red'>red</font>. This is <font color='blue'>blue</font>."; 
textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE); 
+0

Dank dieser arbeitete Mensch. –

+0

können wir den Hintergrund eines Teils des Textes ähnlich setzen? – AndroidMechanic

+2

Sie können diese Zeichenfolge auch in strings.xml einfügen (aber Sie müssen sie mit '') umgeben. Dann legen Sie die Zeichenfolge wie das, was er sagte, aber Sie brauchen nicht TextView.BufferType.SPANNABLE dafür. – Fire3galaxy

6

Was Sie im Grunde wollen, ist SpannableString

this Siehe für das komplette Beispiel:

+0

Danke SpannableStrings löste es. –

+0

Ja, ich habe die eine überprüft, die ich benutzt habe :) Aber vielen Dank, ich kann nur eine auswählen. –

67

versuchen auf diese Weise

TextView tv = (TextView)findViewById(R.id.tv); 

    Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");   
    wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    tv.setText(wordtoSpan); 
+0

OP sagte bereits, er weiß nicht, wie viele Wörter im Text enthalten sein werden, was jede Art von Lösung ausschließt, die hart codierte Positionen verwendet. – tbm

+0

@tbm Ich habe gerade eine einfache Lösung vorgeschlagen und basierend darauf können wir eine Dynamik zu machen, wie aus Satz "Hi" Wort sollte in roter Farbe "Tschüss" Wort in blauer Farbe und so weiter angezeigt werden und dafür müssen wir bekommen dynamische Position und als können wir unsere Logik darauf basierend hinzufügen. – Khan

+2

@tbm dann nicht hart codieren sie, berechnen sie im laufenden Betrieb. Ich mag diese Antwort. –

Verwandte Themen