Ustawiam kolor na czerwony, a potem chcę ponownie ustawić kolor z powrotem na domyślny, ale nie wiem jaki jest kolor domyślny, czy ktoś wie?
Odpowiedzi:
Możesz zapisać stary kolor, a następnie użyć go do przywrócenia oryginalnej wartości. Oto przykład:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Ale ogólnie domyślny TextView
kolor tekstu jest określany na podstawie bieżącego motywu zastosowanego do Twojego Activity
.
Właściwie kolor TextView to:
android:textColor="@android:color/tab_indicator_text"
lub
#808080
Istnieje kilka domyślnych kolorów zdefiniowanych w programie android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
zamiastColor c = ...
getResources().getColor(int id)
jest przestarzałe (patrz link ). Możesz użyć getResources().getColor (int id, Resources.Theme theme)
alboContextCompat.getColor(contex, android.R.color.primary_text_dark)
Uzyskaj te wartości z atrybutów:
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();
W motywie używanym przez system Android są ustawienia domyślne, jeśli nie określisz koloru tekstu. Może mieć różne kolory w różnych interfejsach użytkownika systemu Android (np. HTC Sense, Samsung TouchWiz itp.). Android ma motyw _dark
i _light
, więc wartości domyślne są dla nich różne (ale prawie czarne w obu z nich w waniliowym Androidzie). Dobrą praktyką jest jednak samodzielne zdefiniowanie podstawowego koloru tekstu, aby zapewnić spójny styl na wszystkich urządzeniach.
W kodzie:
getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);
W xml:
android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"
Jako odniesienie w waniliowym Androidzie kolor tekstu ciemnego motywu jest, #060001
a w jasnym motywie jest to #060003
od API v1. Zobacz klasę stylu Androida tutaj
Wiem, że jest stary, ale według mojego własnego edytora motywów z domyślnym lekkim motywem, domyślnie
textPrimaryColor = #000000
i
textColorPrimaryDark = #757575
Użyłem próbnika kolorów w widoku tekstu i otrzymałem numer 757575
Nie ma domyślnego koloru. Oznacza to, że każde urządzenie może mieć własne.
Uważam, że domyślna wartość całkowita koloru to 16711935 (0x00FF00FF).
hej, możesz tego spróbować
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Zauważyłem, że android:textColor="@android:color/secondary_text_dark"
zapewnia wynik bliższy domyślnemu kolorowi TextView niż android:textColor="@android:color/tab_indicator_text"
. Przypuszczam, że musisz przełączać się między second_text_dark / light w zależności od motywu, którego używasz
Możesz użyć TextView.setTag / getTag do przechowywania oryginalnego koloru przed wprowadzeniem zmian. Sugerowałbym utworzenie unikalnego zasobu id w ids.xml w celu rozróżnienia innych tagów, jeśli masz.
przed ustawieniem na inne kolory:
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
Zmiana z powrotem:
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}