Ho impostato il colore sul rosso, dopodiché voglio reimpostare il colore di default, ma non so qual è il colore predefinito, qualcuno lo sa?
Risposte:
È possibile salvare il vecchio colore e quindi utilizzarlo per ripristinare il valore originale. Ecco un esempio:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Ma in generale il TextView
colore del testo predefinito è determinato dal tema corrente applicato al tuo file Activity
.
In realtà il colore TextView è:
android:textColor="@android:color/tab_indicator_text"
o
#808080
Ci sono alcuni colori predefiniti definiti in android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
invece diColor c = ...
getResources().getColor(int id)
è ora deprecato (vedere il collegamento ). Puoi utilizzare getResources().getColor (int id, Resources.Theme theme)
oContextCompat.getColor(contex, android.R.color.primary_text_dark)
Ottieni questi valori dagli attributi:
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();
Ci sono impostazioni predefinite nel tema che Android utilizza se non specifichi un colore del testo. Può essere di colori diversi in varie interfacce utente Android (ad esempio HTC Sense, Samsung TouchWiz, ecc.). Android ha un tema _dark
e _light
, quindi i valori predefiniti sono diversi per questi (ma quasi neri in entrambi in Android vaniglia). È comunque buona norma definire personalmente il colore del testo principale per fornire uno stile coerente in tutti i dispositivi.
In codice:
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"
Come riferimento in Android vanilla il colore del testo del tema scuro è #060001
e nel tema chiaro è #060003
dall'API v1. Vedi la classe di stile Android qui
So che è vecchio ma secondo il mio editor di temi con tema chiaro predefinito, predefinito
textPrimaryColor = #000000
e
textColorPrimaryDark = #757575
Ho usato un selettore di colori nella visualizzazione del testo e ho ottenuto questo # 757575
Non esiste un colore predefinito. Significa che ogni dispositivo può avere il proprio.
Credo che il valore intero del colore predefinito sia 16711935 (0x00FF00FF).
hey puoi provare questo
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Ho scoperto che android:textColor="@android:color/secondary_text_dark"
fornisce un risultato più vicino al colore TextView predefinito rispetto a android:textColor="@android:color/tab_indicator_text"
. Suppongo che tu debba passare da secondary_text_dark / light a seconda del tema che stai utilizzando
È possibile utilizzare TextView.setTag / getTag per memorizzare il colore originale prima di apportare modifiche. Suggerirei di creare una risorsa id univoca in ids.xml per differenziare altri tag, se ne hai.
prima di impostare altri colori:
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
Cambiare indietro:
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}