In XML können wir eine Textfarbe durch das textColor
-Attribut festlegen, z. B. Android:textColor="#FF0000"
. Aber wie ändere ich es durch Codierung?
Ich habe versucht, etwas wie:
holder.text.setTextColor(R.color.Red);
Wobei holder
nur eine Klasse ist und text
vom Typ TextView
ist. Rot ist ein RGB-Wert (# FF0000), der in Zeichenfolgen festgelegt wird.
Aber es zeigt eine andere Farbe als rot. Welche Art von Parameter können wir in setTextColor () übergeben? In der Dokumentation steht int
, aber handelt es sich um einen Ressourcenreferenzwert oder etwas anderes?
Du solltest benutzen:
holder.text.setTextColor(Color.RED);
Zur Überprüfung der Gesundheit habe ich es einfach ausprobiert, weil ich sowieso ein Projekt geöffnet hatte, und ja, es ist schön und rot; D
Sie können natürlich verschiedene Funktionen aus der Klasse Color
verwenden, um den gleichen Effekt zu erzielen.
Color.parseColor
(Manual) (wie Lex verwendet)
text.setTextColor(Color.parseColor("#FFFFFF"));
Color.rgb
und Color.argb
( Manual rgb ) ( Manual argb ) (wie Ganapathy verwendet)
holder.text.setTextColor(Color.rgb(200,0,0));
holder.text.setTextColor(Color.argb(0,200,0,0));
Und wenn Sie Ihre Farbe in einer XML
-Datei definieren möchten, können Sie dies natürlich tun:
<color name="errorColor">#f00</color>
weil die Funktion getColor()
veraltet ist1, du musst es so benutzen:
ContextCompat.getColor(context, R.color.your_color);
Sie können auch einfaches HEX wie folgt einfügen:
myTextView.setTextColor(0xAARRGGBB);
Wo Sie zuerst einen Alpha-Kanal haben, dann den Farbwert.
Schauen Sie sich natürlich das komplette Handbuch an public class Color extend Object.
1Dieser Code war auch hier zu finden:
textView.setTextColor(getResources().getColor(R.color.errorColor));
Diese Methode ist jetzt in Android M veraltet. Sie können sie jedoch aus contextCompat in der Support-Bibliothek verwenden, wie das Beispiel jetzt zeigt.
Wenn Sie Ihre Farben dennoch in Ihrer XML-Datei angeben möchten:
<color name="errorColor">#f00</color>
Verweisen Sie dann mit einer der beiden folgenden Methoden in Ihrem Code darauf:
textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));
oder
textView.setTextColor(getResources().getColor(R.color.errorColor, null));
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 einfacher?
Und wenn Sie die Compat-Bibliothek verwenden, können Sie so etwas tun
textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
Und noch einer:
TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
Sie können dies auch nur aus einer XML-Datei heraus tun.
Erstellen Sie eine color.xml
-Datei im Ordner values:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="textbody">#ffcc33</color>
</resources>
Dann können Sie in jeder XML-Datei die Farbe für den Text festlegen, indem Sie
Android:textColor="@color/textbody"
Oder Sie können diese Farbe in einer Java -Datei verwenden:
final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));
Sie können verwenden
holder.text.setTextColor(Color.rgb(200,0,0));
Sie können mit Transparenz auch festlegen, welche Farbe Sie möchten.
holder.text.setTextColor(Color.argb(0,200,0,0));
a für Alpha (Transparent) Wert r-rot g-grün b-blau
Es gibt viele verschiedene Möglichkeiten, die Farbe in der Textansicht festzulegen.
Fügen Sie den Farbwert in studio res-> values-> colors.xml als hinzu
<color name="color_purple">#800080</color>
Stellen Sie nun die Farbe in xml oder der Aktivitätsklasse als ein
text.setTextColor(getResources().getColor(R.color.color_purple)
Wenn Sie den Farbcode direkt angeben möchten, verwenden Sie den folgenden Color.parseColor-Code
textView.setTextColor(Color.parseColor("#ffffff"));
Sie können auch RGB verwenden
text.setTextColor(Color.rgb(200,0,0));
Verwendung kann auch direkten Hexcode für TextView verwenden. Sie können auch einfaches HEX wie folgt einfügen:
text.setTextColor(0xAARRGGBB);
Sie können argb auch mit Alpha-Werten verwenden.
text.setTextColor(Color.argb(0,200,0,0));
a für Alpha (Transparent) v.
Und wenn Sie die Compat-Bibliothek verwenden, können Sie so etwas tun
text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
verwenden Sie den folgenden Code in layout.xml
<TextView Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/add"
Android:layout_marginTop="16dp"
Android:textAppearance="?
Android:attr/textAppearanceMedium"
Android:textColor="#25383C"
Android:textSize="13sp" />
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/add"
Android:layout_marginTop="16dp"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="#25383C"
Android:textSize="13sp" />
Normalerweise mache ich das für alle Ansichten:
myTextView.setTextColor(0xAARRGGBB);
wo
AA definiert Alpha (00 für transparent, FF für opak)
RRGGBB definiert den normalen HTML-Farbcode (wie FF0000 für Rot).
Wenn Sie setTextAppearance verwenden möchten, sollten Sie wissen, dass die Textfarbe mit dem vom Design geerbten Stil überschrieben wird. Wenn Sie also beide verwenden möchten, setzen Sie die Farbe danach.
Das funktioniert:
textView.setTextAppearance(context, Android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);
Während dies dazu führt, dass Ihre Textfarbe beispielsweise weiß (für dunkle Themen) oder schwarz (für helle Themen) ist:
textView.setTextColor(Color.RED);
textView.setTextAppearance(context, Android.R.style.TextAppearance_Medium);
Im Gegensatz dazu ist die Reihenfolge in XML beliebig.
textView.setTextColor(ContextCompat.getColor(getApplicationContext(),R.color.colorWhite));
Schreiben Sie in die Datei colors.xml
den folgenden Code:
<color name="colorWhite">#FFFFFF</color>
holder.text.setTextColor(Color.rgb(200,0,0));
oder
myTextView.setTextColor(0xAARRGGBB);
Verwenden:
TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
text.setTextColor(getResource().getColor(R.color.black))
Sie haben in color.xml eine schwarze Farbe erstellt.
OR
text.setTextColor(Color.parseColor("#000000"))
Geben Sie hier den gewünschten Hexcode ein
OR
text.setTextColor(Color.BLACK)
Sie können statische Farbfelder verwenden
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));
Der obige Code funktioniert auf meiner Seite. Hier ist text
ein TextView, auf das die Farbe gesetzt werden soll.
Mit dem Adapter können Sie die Textfarbe mit folgendem Code einstellen:
holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
text1.setTextColor(Color.parseColor("#000000"));
Ab API 23 ist getResources().getColor()
veraltet.
Verwenden Sie dies stattdessen:
textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
In Adapter können Sie die Textfarbe mithilfe des folgenden Codes festlegen:
holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
wenn Sie den Farbcode direkt eingeben möchten, verwenden Sie
textView.setTextColor(Color.parseColor("#ffffff"));
oder wenn Sie einen Farbcode aus dem Farbordner eingeben möchten, verwenden Sie
textView.setTextColor(R.color.white);
Um die Farbe einer Textansicht einzustellen, reicht TextView.setTextColor(R.color.YOURCOLOR)
nicht aus!
Es muss so verwendet werden -
TextView myText = (TextView) findViewById(R.id.YoutTextViewID);
myText.setTextColor(getResources().getColor(R.color.YOURCOLOR);
OR
myText.setTextColor(Color.parseColor("#54D66A"));
holder.userType.setTextColor(context.getResources().getColor(
R.color.green));
textViewStatus.setTextColor(res.getColor(R.color.green));
Zur Bereitstellung von RGB-Werten: text.setTextColor(Color.rgb(200,0,0));
Zum Parsen der Farbe von einem Hex-Wert: text.setTextColor(Color.parseColor("#FFFFFF"));
Ebenso habe ich color.xml
verwendet:
<color name="white">#ffffff</color>
<color name="black">#000000</color>
Zum Einstellen des TextView
Hintergrunds wie folgt:
textView.setTextColor(R.color.white);
Ich bekam eine andere Farbe, aber als ich den folgenden Code verwendete, bekam ich die tatsächliche Farbe.
textView.setTextColor(Color.parseColor("#ff6363"));
Sie können textView.setTextColor(Color.BLACK)
verwenden, um alle integrierten Farben der Klasse Color
zu verwenden.
Sie können auch textView.setTextColor(Color.parseColor(hexRGBvalue))
verwenden, um benutzerdefinierte Farben zu definieren.
Ich habe es so gemacht: Erstelle eine XML-Datei mit dem Namen Colors im Ordner res/values.
Meine Colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="vermelho_debito">#cc0000</color>
<color name="azul_credito">#4c4cff</color>
<color name="preto_bloqueado">#000000</color>
<color name="verde_claro_fundo_lista">#CFDBC5</color>
<color name="branco">#ffffff</color>
<color name="amarelo_corrige">#cccc00</color>
<color name="verde_confirma">#66b266</color>
</resources>
Um diese Farben aus der XML-Datei zu erhalten, habe ich diesen Code verwendet: valor es ist ein TextView und ctx es ist ein Context-Objekt. Ich verwende es nicht aus einer Aktivität, sondern aus einem BaseAdapter in eine ListView. Deshalb habe ich dieses Kontextobjekt verwendet.
valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));
Ich hoffe es hilft.
Ich habe dies für eine TextView in einem ViewHolder für eine RecyclerView gemacht. Ich bin mir nicht sicher, warum, aber es hat bei der ViewHolder-Initialisierung nicht funktioniert.
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.text_view);
textView.setTextColor(context.getResources().getColor(R.color.myColor));
// Other stuff
}
Aber als ich es in den onBindViewHolder verschoben habe, hat es gut funktioniert.
public void onBindViewHolder(ViewHolder holder, int position){
// Other stuff
holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}
Hoffe das hilft jemandem.
getColor () ist veraltet
Also versuch es mal so:
tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
Versuche dies:
textView.setTextColor(getResources().getColor(R.color.errorColor, null));
Versuche dies:
TextView textview = (TextView) findViewById(R.id.textview );
textview .setTextColor(Color.parseColor("#85F85F"));
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
Wenn Sie sich in einem Adapter befinden und dennoch eine in Ressourcen definierte Farbe verwenden möchten, können Sie den folgenden Ansatz verwenden:
holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));