2010-07-15 3 views
2

I a défini une couleur blanche dans mycolors.xml sous res/valeurs ci-dessous:couleur définie dans res non utilisables dans le code

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="my_white">#ffffffff</color> 
</resources> 

Dans mon code, je mets la couleur du texte d'un TextView comme la couleur blanche je définissais:

TextView myText = (TextView) findViewById(R.id.my_text); 
myText.setTextColor(R.color.my_white); 

Mais le texte dans le TextView avéré être une couleur noire.

Lorsque j'utilise @ color/my_white dans les fichiers XML de mise en page, cela fonctionne correctement.

Je vérifie Generate R.java, et voir:

public static final int my_white = 0x7f070025;

Ai-je raté quelque chose?

Merci.

Répondre

6

R.color.my_white est un ID qui contient une référence à votre ressource. setTextColor s'attend à ce que vous transmettiez une couleur, pas une référence. Le code compile et ne donne aucune erreur car setTextColor attend un int; mais, bien sûr, vous donnez le mauvais int. Dans ce cas, vous devrez convertir la référence à un nombre entier qui représente cette couleur:

Resources res = getResources(); 
int color = res.getColor(R.color.my_white); 
myText.setTextColor(color); 
0

Ce que vous fournissez setTextColor est actuellement l'ID de l'objet my_white, pas la couleur my_white. Je pense que ce que vous voulez est R.color.my_white.

+0

Il y a une faute de frappe dans ma question. En fait, mon code est en train d'écrire: myText.setTextColor (R.color.my_white); – user256239

2

Basé sur le Android developer docs, il semble que votre référence devrait être:

myText.setTextColor(R.color.my_white); 

ETA: Comme il est indiqué dans la réponse de Mayra, R.id.my_white est probablement renvoie une référence à l'objet qui représente votre couleur plutôt que la valeur ARGB de la couleur.

+0

Il y a une erreur dans ma question. En fait, mon code est en train d'écrire: myText.setTextColor (R.color.my_white); – user256239

+0

Avez-vous essayé de suivre la partie postérieure du document où il donne un exemple de récupération de la ressource de couleur? – eldarerathis

+0

Je l'ai eu. La méthode correcte pour écrire le code doit être: myText.setTextColor (getResources(). GetColor (R.color.ff_white)); Merci! – user256239