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?
87
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
la source
Certaines couleurs par défaut sont définies dans
android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
la source
int c = ...
au lieu deColor c = ...
getResources().getColor(int id)
est désormais obsolète (voir lien ). Vous pouvez utilisergetResources().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();
la source
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 icila source
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
la source
J'ai utilisé un sélecteur de couleur sur la vue de texte et j'ai obtenu ce # 757575
la source
Cela peut ne pas être possible dans toutes les situations, mais pourquoi ne pas simplement utiliser la valeur d'un TextView aléatoire différent qui existe dans la même activité et qui porte la couleur que vous recherchez?
txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());
la source
Il n'y a pas de couleur par défaut. Cela signifie que chaque appareil peut avoir son propre.
la source
Je crois que la valeur entière de couleur par défaut est 16711935 (0x00FF00FF).
la source
ColorStateList colorStateList = textView.getTextColors(); String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
la source
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 queandroid:textColor="@android:color/tab_indicator_text"
. Je suppose que vous devez basculer entre secondary_text_dark / light en fonction du thème que vous utilisezla source
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) }
la source