In XML können wir eine Textfarbe durch das textColor
Attribut wie festlegen android:textColor="#FF0000"
. Aber wie ändere ich es durch Codierung?
Ich habe so etwas versucht wie:
holder.text.setTextColor(R.color.Red);
Wo holder
ist nur eine Klasse und text
ist vom Typ TextView
. Rot ist ein in Zeichenfolgen festgelegter RGB-Wert (# FF0000).
Aber es zeigt eher eine andere Farbe als Rot. Welche Art von Parameter können wir in setTextColor () übergeben? In der Dokumentation heißt es int
, aber ist es ein Ressourcenreferenzwert oder etwas anderes?
Antworten:
Du solltest benutzen:
Sie können
Color
natürlich verschiedene Funktionen aus der Klasse verwenden, um den gleichen Effekt zu erzielen.Color.parseColor
(Manuell) (wie LEX verwendet)Color.rgb
undColor.argb
( Manual rgb ) ( Manual argb ) (wie Ganapathy verwendet)Und wenn Sie Ihre Farbe in einer
XML
Datei definieren möchten , können Sie dies natürlich tun:Da die
getColor()
Funktion veraltet ist 1 , müssen Sie sie wie folgt verwenden:Sie können auch einfaches HEX einfügen, wie folgt:
Wo Sie zuerst einen Alphakanal haben, dann den Farbwert.
Schauen Sie sich natürlich das komplette Handbuch an, öffentliche Klasse Farbe erweitert Objekt .
1 Dieser Code war früher auch hier:
Diese Methode ist in Android M jetzt veraltet. Sie können sie jedoch aus dem contextCompat in der Support-Bibliothek verwenden , wie das Beispiel jetzt zeigt.
quelle
getColor(int)
ist veraltet.Wenn Sie Ihre Farben dennoch in Ihrer XML-Datei angeben möchten:
Verweisen Sie dann in Ihrem Code mit einer der beiden folgenden Methoden darauf:
oder
Das erste ist wahrscheinlich vorzuziehen, wenn Sie gegen Android M kompilieren. Das Thema, das Sie übergeben, kann jedoch null sein. Vielleicht ist das für Sie also einfacher?
Und wenn Sie die Compat-Bibliothek verwenden, können Sie so etwas tun
quelle
getColor(int)
ist veraltet.ContextCompat.getColor(getContext(), R.color.yourColor);
scheint der Ersatz zu sein.Und noch einer:
quelle
getResources()
ist eine Kontextelementfunktion. Verwenden Sie für AdaptergetContext().getResources()
. Farbwerte sollten in Ressourcen eingehen, wie in der Antwort von @ xbakesx.Sie können dies auch nur aus einer XML-Datei heraus tun.
Erstellen Sie eine
color.xml
Datei im Werteordner:Dann können Sie in jeder XML-Datei die Farbe für Text festlegen, indem Sie:
Oder Sie können diese Farbe in einer Java-Datei verwenden:
quelle
Sie können verwenden
Sie können auch mit Transparenz festlegen, welche Farbe Sie möchten.
a für Alpha (transparent) Wert r-rot g-grün b-blau
quelle
Verwenden Sie den folgenden Code in layout.xml
quelle
Es gibt viele verschiedene Möglichkeiten, die Farbe in der Textansicht festzulegen.
Farbwert in Studio Res-> Werte-> Farben.xml als hinzufügen
Stellen Sie nun die Farbe in XML oder Aktivitätsklasse als ein
Wenn Sie einen Farbcode direkt angeben möchten, verwenden Sie den folgenden Color.parseColor-Code
Sie können auch RGB verwenden
Verwendung kann auch direkten Hexcode für textView verwenden. Sie können auch einfaches HEX einfügen, wie folgt:
Sie können argb auch mit Alpha-Werten verwenden.
a für Alpha (transparent) v.
Und wenn Sie die Compat-Bibliothek verwenden, können Sie so etwas tun
quelle
Normalerweise mache ich das für alle Ansichten:
wo
AA definiert Alpha (00 für transparent, FF für undurchsichtig)
RRGGBB definiert den normalen HTML-Farbcode (wie FF0000 für Rot).
quelle
Wenn Sie setTextAppearance verwenden möchten , sollten Sie wissen, dass die Textfarbe mit dem vom Thema geerbten Stil überschrieben wird. Wenn Sie also beide verwenden möchten, stellen Sie die Farbe anschließend ein .
Das funktioniert:
Während dies dazu führt, dass Ihre Textfarbe beispielsweise weiß (für ein dunkles Thema) oder schwarz (für das helle Thema) ist:
Im Gegensatz dazu ist die Reihenfolge in XML beliebig.
quelle
In der
colors.xml
Datei, schreiben Sie in dem folgenden Code:quelle
Ich glaube, wenn Sie eine Farbe als Ressource (in der XML- Datei) angeben möchten , müssen Sie den ARGB- Wert angeben (nicht nur den RGB-Wert).
Versuchen Sie, Ihren Farbwert auf zu ändern
#FFFF0000
. Es sollte dir ROT geben.quelle
text.setTextColor(getResource().getColor(R.color.black))
Sie haben schwarze Farbe in color.xml erstellt.ODER
text.setTextColor(Color.parseColor("#000000"))
Geben Sie hier den gewünschten Hexcode einODER
text.setTextColor(Color.BLACK)
Sie können statische Farbfelder verwendenquelle
Verwenden:
quelle
oder
quelle
Mit dem Adapter können Sie die Textfarbe mithilfe des folgenden Codes einstellen:
quelle
Der obige Code funktioniert auf meiner Seite. Hier
text
ist eine Textansicht, in der die Farbe eingestellt werden muss.quelle
quelle
Ab API 23
getResources().getColor()
ist veraltet.Verwenden Sie stattdessen Folgendes:
quelle
quelle
In Adapter können Sie die Textfarbe mithilfe des folgenden Codes festlegen:
quelle
Wenn Sie den Farbcode direkt angeben möchten, verwenden Sie
oder wenn Sie Farbcode aus dem Farbordner geben möchten, verwenden Sie
quelle
Es
TextView.setTextColor(R.color.YOURCOLOR)
reicht nicht aus , die Farbe einer Textansicht festzulegen !Es muss so verwendet werden -
ODER
quelle
quelle
Ebenso benutzte ich
color.xml
:Zum Einstellen des
TextView
Hintergrunds wie folgt:Ich habe eine andere Farbe bekommen, aber als ich den folgenden Code verwendet habe, habe ich die tatsächliche Farbe bekommen.
quelle
Ich habe Folgendes getan: Erstellen Sie eine XML-Datei mit dem Namen Colors im Ordner res / values.
Meine Colors.xml:
Um diese Farben aus der XML-Datei zu erhalten, habe ich folgenden Code verwendet: valor ist eine Textansicht und ctx ist ein Kontextobjekt. Ich verwende es nicht von einer Aktivität, sondern von einem BaseAdapter zu einer ListView. Deshalb habe ich dieses Kontextobjekt verwendet.
Ich hoffe es hilft.
quelle
Zum Bereitstellen von RGB-Werten:
text.setTextColor(Color.rgb(200,0,0));
Zum Parsen der Farbe von einem Hex-Wert:
text.setTextColor(Color.parseColor("#FFFFFF"));
quelle
Wenn Sie sich in einem Adapter befinden und dennoch eine in Ressourcen definierte Farbe verwenden möchten, können Sie den folgenden Ansatz ausprobieren:
quelle
quelle
getColor () ist veraltet
Versuchen Sie es also so:
quelle
Ich habe dies für eine Textansicht in einem ViewHolder für eine RecyclerView getan. Ich bin mir nicht sicher warum, aber es hat bei der ViewHolder-Initialisierung bei mir nicht funktioniert.
Aber als ich es in den onBindViewHolder verschoben habe, hat es gut funktioniert.
Hoffe das hilft jemandem.
quelle