text = text + CepVizyon.getPhoneCode() + "\n\n"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText();
activationText.setText(text);
myTextView.setText(text);
Ich möchte die Farbe für CepVizyon.getPhoneCode()
die Zeichenfolge ändern . Wie kann ich das machen?
android
uitextview
textview
atasoyh
quelle
quelle
Antworten:
Spannable ist flexibler:
quelle
()
nach setzen,text.length
dalength
es sich bei einer Methode nicht um ein Feld handelt. Würde es selbst tun, aber Änderungen müssen aus mindestens 6 Zeichen bestehen :)Html.fromHtml(R.id.your_html_string);
quelle
Wenn Sie statischen Text haben, der Farbe benötigt, können Sie ihn ohne Code über die Zeichenfolgendatei hinzufügen:
dann
Ergebnis
Ich bin mir nicht sicher, auf welchen API-Versionen dies funktioniert, aber nicht für API 19, die ich bisher getestet habe. Daher unterstützen dies wahrscheinlich nur einige der neuesten API-Versionen
Bearbeiten: Wie in den Kommentaren erwähnt, versuchen Sie, @hairraisin
fgcolor
anstellecolor
der Schriftfarbe zu verwenden. Dann sollte es für niedrigere API-Ebenen funktionieren, es müssen jedoch weitere Tests durchgeführt werden, um sicherzugehenquelle
<font fgcolor=...
auf API 15 und API 25 (I nicht speziell 19 getestet hat , obwohl)In Bezug auf Maneeshs Antwort funktioniert dies, aber Sie müssen die Anführungszeichen für das Farbattribut hinzufügen und maskieren.
quelle
Für mich ist das super!
quelle
Hier ist eine
colorize
Funktion, die auf der Antwort von andyboot basiert:quelle
Hier eine Lösung in Kotlin, mit
SpannableString
der die Farbe eines Teils eines Strings geändert wird.quelle
Ich mochte die Idee nicht, dies jedes Mal per Code zu tun, wenn ich Teile des Textes einfärben möchte, was ich in all meinen Apps oft getan habe (und da in einigen Fällen der Text zur Laufzeit mit verschiedenen Inline- eingestellt wird). definierte Farben) also habe ich meine eigenen erstellt
MarkableTextView
.Die Idee war:
Hier ist der Prozess Schritt für Schritt:
Zuerst brauchte ich eine Möglichkeit, XML-Tags in einer bestimmten Zeichenfolge zu finden, und
Regex
habe den Trick gemacht.Damit das oben Genannte mit einem XML-Tag übereinstimmt, müssen die folgenden Kriterien erfüllt sein:
<a>
<a >
<a-a>
<a ..attrs..>
aber nicht< a>
<1>
<a></a>
aber nicht<a></b>
Nun zu den Attributen, die wir verwenden werden.
Es hat das gleiche Konzept und im Allgemeinen musste ich für beide nicht weit gehen, da der Compiler sich um den Rest kümmert, wenn etwas aus dem Format gerät.
Jetzt brauchen wir eine Klasse, die die extrahierten Daten enthalten kann:
Vor allem werden wir diesen coolen Iterator hinzufügen, den ich lange benutzt habe, um Übereinstimmungen zu durchlaufen ( ich kann mich nicht an den Autor erinnern) :
MarkableTextView:
Zum Schluss noch das Styling. Hier ist ein sehr einfacher Styler, den ich für diese Antwort gemacht habe:
Und so sieht die
Markable
Klasse mit den Definitionen aus:Jetzt müssen wir nur noch auf eine Zeichenfolge verweisen, und im Grunde sollte sie so aussehen:
Achten Sie darauf , die Tags mit einer einzuwickeln
CDATA Section
und die Flucht"
mit\
.Ich habe dies als modulare Lösung entwickelt, um Teile des Textes auf alle möglichen Arten zu verarbeiten, ohne unnötigen Code dahinter stecken zu müssen.
quelle
Ich habe getan, wie Andy Boot sagte, aber ich hatte auch eine anklickbare Spanne, und es hat nicht funktioniert, weil die Reihenfolge, in der
setSpans
sie aufgerufen wurden. Sie müssen also zuerst dasspannable.setSpan(clickableSpanand...
dann das aufrufenspannable.setSpan(new ForegroundColorSpan...
, um die Farbe in der Textansicht zu erhaltenquelle
Ich habe diese kleine Funktion erstellt. Übergeben Sie einfach Ihren Text an die Farbe, die Start- und Endindizes dessen, was Sie für diesen Text einfärben möchten, und die Farbe selbst
Kotlin
Verwendung
quelle
Zeichenzeichen-Escapezeichen verwenden + Html.fromHtml ()
Speichern des Strings im String-Ressourcenordner
Wie in TextView anzeigen?
Bonus:
Der String in der Ausgabe sieht folgendermaßen aus
quelle
Mit einer universellen Kotlin-Erweiterungsfunktion würde dies folgendermaßen aussehen:
quelle
Eine Möglichkeit besteht darin, sich
myTextView
in wenige separate Teile aufzuteilenTextViews
, von denen einer nur für den Telefoncode gilt. Dann ist die Steuerung der Farbe dieser spezifischenTextView
Methode ziemlich einfach.quelle