Ich suche nach einer Möglichkeit, die Farbe eines Textes eines einzelnen Wortes in einem TextView
von innerhalb eines zu ändern Activity
.
Zum Beispiel damit:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
Wie würde ich die Farbe des next
Textes in Rot ändern ?
Antworten:
Der einfachste Weg, den ich kenne, ist, einfach HTML zu verwenden.
Dazu müssen Sie jedoch die Textansicht neu erstellen, wenn Sie (falls?) Die Farbe ändern möchten, was zu Problemen führen kann.
quelle
fromHtml
ist jetzt veraltetHtml.fromHtml
ist veraltet. Diese Lösung hat bei mir funktioniert!Sie müssen spannable verwenden. Dies ermöglicht es Ihnen auch, die Größe eines Textes zu erhöhen, ihn fett zu machen usw. ... sogar ein Bild einzufügen.
quelle
SpannableString
Objekt zuweisen , indem Sie dieTextFormatted
Eigenschaft Ihres Steuerelements verwenden.java.lang.String cannot be cast to android.text.Spannable
Fehler.Verwenden Sie SpannableStringBuilder wie folgt:
quelle
new ForegroundColorSpan(Color)
, damit der Text seine ursprüngliche Standardfarbe beibehält?Für lange Saiten können Sie Folgendes verwenden:
quelle
Wenn Sie den Status aller Instanzen eines bestimmten Textes
String
in einemTextView
Text ändern möchten (ohne Berücksichtigung der Groß- und Kleinschreibung), können SieStringBuilder
s verwenden undSpannableString
Folgendes tun:}}
TextView
Text in aStringBuilder
.StringBuilder
.TextView
Text in aSpannableString
String
Instanzen imTextView
Text zu finden und sie zu ändern, wenn sie erreicht sind.TextView
aufSpannableString
.quelle
Ich habe in Kotlin eine Utility-Funktion für meinen eigenen Anwendungsfall implementiert, die möglicherweise für eine andere Person nützlich ist.
Wie ich es benutze:
quelle
VERWENDEN:
Funktion:
quelle
Ich denke, dies ist besser lesbar, um ein Wort in einer Zeichenfolge zu färben. Es ist wahrscheinlich auch ein bisschen effizienter, weil Sie einmal schreiben
quelle