Quelle est la couleur par défaut du texte dans la vue textuelle?

87

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?

Lukap
la source

Réponses:

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 TextViewcouleur du texte par défaut est déterminée à partir du thème actuel appliqué à votre Activity.

inazaruk
la source
La solution la plus correcte. Conserver les états de couleur du texte (désactivé, etc.)
dasar
D'après mon observation, la couleur du texte définie par le thème n'est pas héritée par TextView ajouté dynamiquement à partir du code. Il apparaît toujours en blanc quel que soit le thème sombre / clair.
shiouming
1
@shiouming Dépend du contexte utilisé. Chaque constructeur utilise un contexte, et dans ce contexte, un thème est défini (généralement par défaut). Si nécessaire, utilisez TextView (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Bonatti
109

En fait, la couleur TextView est:

android:textColor="@android:color/tab_indicator_text"

ou

#808080
Alex Zaraos
la source
4
C'est la couleur du texte de l'indicateur d'onglet par défaut. Dans de nombreux cas, cela peut être la même que la couleur du texte par défaut, mais je ne m'y fierais pas.
k2col
6
Très proche, mais cette couleur n'est pas la même.
LukaszTaraszka
2
@LukTar a raison, j'ai utilisé Photoshop et vérifié la couleur ... # 737373 est la couleur du texte de la vue textuelle à partir d'un échantillon de pixels ponctuels (taille de la zone d'échantillon d'un pixel) sur une vue zoomée à 1000% dans le studio Android ... vous devez regarder le style par défaut de l'application pour obtenir la valeur réelle de n'importe quelle application particulière ...
me_
40

Certaines couleurs par défaut sont définies dans android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);
davenpcj
la source
4
Il devrait être int c = ...au lieu deColor c = ...
Kevin Cruijssen
7
À partir du niveau 23 de l'API, 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)
InfectedPacket
primary_text_dark est maintenant obsolète mais aucune idée pourquoi :(
Impulse The Fox
15

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();
Bondax
la source
Cela semble sélectionner correctement la couleur en fonction du thème et se mettre à jour, par exemple, si l'application est en mode nuit.
Brill Pappin
Pour obtenir le TypedArray du thème actuel, appelez-le sans le thème arg: TypedArray a = getTheme (). GetStyledAttributes (attrs);
petrsyn
Cela n'obtiendra une couleur appropriée que si le thème utilise réellement textColorSecondary. Puisqu'il est possible de remplacer cela dans un thème ou un style, ce n'est pas une manière très précise de déterminer quelle sera réellement la couleur de texte par défaut pour une vue particulière. Notez également que les vues individuelles peuvent désormais avoir un thème, de sorte que le thème associé au contexte de la vue doit être utilisé au lieu de supposer que le thème de l'activité est en vigueur pour toutes ses vues.
Lorne Laliberte
6

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 _darket _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 #060001et le thème clair #060003depuis l'API v1. Voir la classe de style Android ici

Patrick Favre
la source
Les couleurs référencées dans votre dernier lien ne sont en fait pas du tout des couleurs, ce ne sont que des valeurs android.R utilisées pour rechercher la couleur. Vous pouvez rechercher les couleurs par défaut en trouvant la couleur dans ce répertoire et en recherchant la référence de couleur de base dans ce fichier .xml .
Alex Gittemeier
5

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
Ahmad Reza Enshaee
la source
2

J'ai utilisé un sélecteur de couleur sur la vue de texte et j'ai obtenu ce # 757575

dave o grady
la source
2

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());
Mandrin
la source
0

Il n'y a pas de couleur par défaut. Cela signifie que chaque appareil peut avoir son propre.

piotrpo
la source
7
Non, il y a des couleurs par défaut, juste que chaque distribution Android peut les écraser
Patrick Favre
@ for3st Connaissez-vous des cas où cela change-t-il?
développeur android
0

Je crois que la valeur entière de couleur par défaut est 16711935 (0x00FF00FF).

C Nick
la source
12
wow trucs codés en dur, vous savez. Était-ce la valeur de toutes les versions d'Android sur tous les appareils et avec tous les thèmes sélectionnables?! Blague, vous savez ... :)
Bondax
1
La couleur du texte par défaut dans Android est donc le rose? Je pense que c'est plus en ligne avec # 060001 developer.android.com/reference/android/...
Patrick Favre
0

hey tu peux essayer ça

ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Vivek Pratap Singh
la source
0

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

quealegriamasalegre
la source
0

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)
}
Arst
la source