Was ist die Standardfarbe für Text in der Textansicht?

86

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?

Lukap
quelle

Antworten:

87

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 TextViewjedoch anhand des aktuellen Themas bestimmt, das auf Ihr Design angewendet wird Activity.

inazaruk
quelle
Richtigste Lösung.
Textfarbstatus beibehalten
Nach meiner Beobachtung wird die durch das Thema definierte Textfarbe nicht von TextView übernommen, das dynamisch aus dem Code hinzugefügt wird. Es erscheint immer in Weiß, unabhängig vom Dunkel / Hell-Thema.
Shiouming
1
@shiouming Abhängig vom verwendeten Kontext. Jeder Konstruktor verwendet einen Kontext, und in diesem Kontext wird ein Thema festgelegt (normalerweise Standard). Verwenden Sie bei Bedarf die Textansicht (Kontextkontext, AttributeSet-Attribute, int defStyleAttr, int defStyleRes)
Bonatti
109

Eigentlich ist die Farbe TextView:

android:textColor="@android:color/tab_indicator_text"

oder

#808080
Alex Zaraos
quelle
4
Dies ist die Standardfarbe für Tabulatorindikatoren. In vielen Fällen entspricht es möglicherweise der Standardtextfarbe, aber ich würde mich nicht darauf verlassen.
k2col
6
Sehr nah, aber diese Farbe ist nicht die gleiche.
LukaszTaraszka
2
@ LukTar ist richtig, ich habe Photoshop verwendet und die Farbe überprüft ... # 737373 ist die Textfarbe der Textansicht aus einem Punktpixel-Beispiel (Beispielbereichsgröße von einem Pixel) in einer Ansicht, die in Android Studio auf 1000% gezoomt wurde ... ich denke Sie müssen sich den Standardstil der App ansehen, um den tatsächlichen Wert für eine bestimmte App zu erhalten ...
me_
40

Es sind einige Standardfarben in definiert android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);
davenpcj
quelle
4
Es sollte int c = ...statt seinColor c = ...
Kevin Cruijssen
7
Ab API-Level23 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)
InfectedPacket
primary_text_dark ist jetzt veraltet, aber keine Ahnung warum :(
Impulse The Fox
15

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();
Bondax
quelle
Dies sieht so aus, als würde die Farbe basierend auf dem Thema richtig ausgewählt und beispielsweise aktualisiert, wenn sich die App im Nachtmodus befindet.
Brill Pappin
Um das TypedArray für das aktuelle Theme abzurufen, rufen Sie es ohne das Theme-Argument auf: TypedArray a = getTheme (). GetStyledAttributes (attrs);
Petrsyn
Dies erhält nur dann eine geeignete Farbe, wenn das Thema tatsächlich textColorSecondary verwendet. Da es möglich ist, dies in einem Thema oder Stil zu überschreiben, ist dies keine sehr genaue Methode, um die Standardtextfarbe für eine bestimmte Ansicht zu bestimmen. Beachten Sie auch, dass einzelne Ansichten jetzt thematisiert werden können. Daher sollte das dem Kontext der Ansicht zugeordnete Thema verwendet werden, anstatt davon auszugehen, dass das Thema der Aktivität für alle Ansichten gültig ist.
Lorne Laliberte
6

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 _darkund _lightThema, 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 #060001und die im hellen Thema #060003seit API v1. Sehen Sie hier die Android-Style-Klasse

Patrick Favre
quelle
Die Farben, auf die in Ihrem letzten Link verwiesen wird, sind eigentlich überhaupt keine Farben, sondern nur android.R-Werte, die zum Nachschlagen der Farbe verwendet werden. Sie können die Standardfarben nachschlagen, indem Sie die Farbe in diesem Verzeichnis suchen und die Grundfarbreferenz in dieser XML-Datei nachschlagen .
Alex Gittemeier
5

Ich weiß, dass es alt ist, aber laut meinem eigenen Themeneditor mit Standard-Lichtthema, Standard

textPrimaryColor = #000000

und

textColorPrimaryDark = #757575
Ahmad Reza Enshaee
quelle
2

Ich habe einen Farbwähler in der Textansicht verwendet und diese # 757575 erhalten

Dave o Grady
quelle
2

Es ist möglicherweise nicht in allen Situationen möglich, aber warum nicht einfach den Wert einer anderen zufälligen Textansicht verwenden, die in derselben Aktivität vorhanden ist und die gewünschte Farbe enthält?

txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());
Futter
quelle
0

Es gibt keine Standardfarbe. Dies bedeutet, dass jedes Gerät ein eigenes haben kann.

piotrpo
quelle
7
Nein, es gibt Standardfarben, nur dass jede Android-Distribution sie überschreiben kann
Patrick Favre
@ for3st Kennen Sie Fälle, in denen sie es ändern?
Android-Entwickler
0

Ich glaube, der Standardwert für die Ganzzahl der Farbe ist 16711935 (0x00FF00FF).

C Nick
quelle
12
Wow, hartcodiertes Zeug, weißt du? War dies der Wert für alle Android-Versionen auf allen Geräten und mit allen auswählbaren Themen?! Scherz, wissen Sie ... :)
Bondax
1
Also ist die Standardtextfarbe in Android Pink? Ich denke, es ist mehr im Einklang mit # 060001 developer.android.com/reference/android/…
Patrick Favre
0

Hey, du kannst es versuchen

ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Vivek Pratap Singh
quelle
0

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

quealegriamasalegre
quelle
0

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)
}
Arst
quelle