Ich habe die Farbe auf Rot gesetzt und möchte danach die Farbe wieder auf Standard zurücksetzen, aber ich weiß nicht, was die Standardfarbe ist, weiß jemand?
Antworten:
Sie können alte Farben speichern und dann verwenden, um den ursprünglichen Wert wiederherzustellen. Hier ist ein Beispiel:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Im Allgemeinen wird die Standardtextfarbe TextView
jedoch anhand des aktuellen Themas bestimmt, das auf Ihr Design angewendet wird Activity
.
Eigentlich ist die Farbe TextView:
android:textColor="@android:color/tab_indicator_text"
oder
#808080
Es sind einige Standardfarben in definiert android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
statt seinColor c = ...
getResources().getColor(int id)
ist es jetzt veraltet (siehe Link ). Sie können entweder getResources().getColor (int id, Resources.Theme theme)
oderContextCompat.getColor(contex, android.R.color.primary_text_dark)
Holen Sie sich diese Werte aus Attributen:
int[] attrs = new int[] { android.R.attr.textColorSecondary };
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, attrs);
DEFAULT_TEXT_COLOR = a.getColor(0, Color.RED);
a.recycle();
Das von Android verwendete Thema enthält Standardeinstellungen, wenn Sie keine Textfarbe angeben. In verschiedenen Android-Benutzeroberflächen (z. B. HTC Sense, Samsung TouchWiz usw.) können unterschiedliche Farben auftreten. Android hat ein _dark
und _light
Thema, daher sind die Standardeinstellungen für diese unterschiedlich (aber in beiden in Vanille-Android fast schwarz). Es wird jedoch empfohlen, Ihre primäre Textfarbe selbst zu definieren, um auf allen Geräten einen einheitlichen Stil zu erzielen.
In Code:
getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);
In XML:
android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"
Als Referenz in Vanilla Android ist die dunkle Textfarbe des Themas #060001
und die im hellen Thema #060003
seit API v1. Sehen Sie hier die Android-Style-Klasse
Ich weiß, dass es alt ist, aber laut meinem eigenen Themeneditor mit Standard-Lichtthema, Standard
textPrimaryColor = #000000
und
textColorPrimaryDark = #757575
Ich habe einen Farbwähler in der Textansicht verwendet und diese # 757575 erhalten
Es gibt keine Standardfarbe. Dies bedeutet, dass jedes Gerät ein eigenes haben kann.
Ich glaube, der Standardwert für die Ganzzahl der Farbe ist 16711935 (0x00FF00FF).
Hey, du kannst es versuchen
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Ich habe festgestellt, dass dies android:textColor="@android:color/secondary_text_dark"
ein näheres Ergebnis für die Standardfarbe von TextView liefert als android:textColor="@android:color/tab_indicator_text"
. Ich nehme an, Sie müssen je nach verwendetem Thema zwischen sekundärem_text_dunkel / Licht wechseln
Sie können TextView.setTag / getTag verwenden, um die Originalfarbe zu speichern, bevor Sie Änderungen vornehmen. Ich würde vorschlagen, eine eindeutige ID-Ressource in ids.xml zu erstellen, um andere Tags zu unterscheiden, wenn Sie haben.
vor dem Einstellen auf andere Farben:
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
Zurück ändern:
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}