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?

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.


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

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);

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();

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


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

2

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


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());

0

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


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).


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()));

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


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)
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.