J'ai défini la couleur sur rouge, et après cela, je veux rétablir la couleur par défaut, mais je ne sais pas quelle est la couleur par défaut, est-ce que quelqu'un le sait?
Réponses:
Vous pouvez enregistrer l'ancienne couleur, puis l'utiliser pour restaurer la valeur d'origine. Voici un exemple:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Mais en général, la TextView
couleur du texte par défaut est déterminée à partir du thème actuel appliqué à votre Activity
.
En fait, la couleur TextView est:
android:textColor="@android:color/tab_indicator_text"
ou
#808080
Certaines couleurs par défaut sont définies dans android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
au lieu deColor c = ...
getResources().getColor(int id)
est désormais obsolète (voir lien ). Vous pouvez utiliser getResources().getColor (int id, Resources.Theme theme)
ouContextCompat.getColor(contex, android.R.color.primary_text_dark)
Obtenez ces valeurs à partir des attributs:
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();
Il y a des valeurs par défaut dans le thème qu'Android utilise si vous ne spécifiez pas de couleur de texte. Il peut s'agir de couleurs différentes dans diverses interfaces utilisateur Android (par exemple, HTC Sense, Samsung TouchWiz, etc.). Android a un thème _dark
et _light
, donc les paramètres par défaut sont différents pour ceux-ci (mais presque noirs dans les deux dans Android vanilla). Il est cependant recommandé de définir vous-même votre couleur de texte principale afin de fournir un style cohérent sur tous les appareils.
Dans du code:
getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);
En xml:
android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"
Comme référence dans Android vanilla, la couleur du texte du thème sombre est #060001
et le thème clair #060003
depuis l'API v1. Voir la classe de style Android ici
Je sais que c'est vieux mais selon mon propre éditeur de thème avec le thème de lumière par défaut, par défaut
textPrimaryColor = #000000
et
textColorPrimaryDark = #757575
J'ai utilisé un sélecteur de couleur sur la vue de texte et j'ai obtenu ce # 757575
Il n'y a pas de couleur par défaut. Cela signifie que chaque appareil peut avoir son propre.
Je crois que la valeur entière de couleur par défaut est 16711935 (0x00FF00FF).
hey tu peux essayer ça
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
J'ai trouvé que cela android:textColor="@android:color/secondary_text_dark"
fournit un résultat plus proche de la couleur TextView par défaut que android:textColor="@android:color/tab_indicator_text"
. Je suppose que vous devez basculer entre secondary_text_dark / light en fonction du thème que vous utilisez
Vous pouvez utiliser TextView.setTag / getTag pour stocker la couleur d'origine avant d'apporter des modifications. Je suggérerais de créer une ressource d'identifiant unique dans ids.xml pour différencier les autres balises si vous en avez.
avant de définir d'autres couleurs:
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
Changer de dos:
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}