2011-02-06 3 views
6

Je travaille sur un projet Android en utilisant Eclipse. Je souhaite changer la couleur d'arrière-plan d'un TextView en utilisant l'une des couleurs que j'ai définies dans res/values ​​/ colors.xml. Ces couleurs sont toutes disponibles en utilisant R.color.color_name.Comment changer la couleur de fond d'un TextView avec une couleur définie dans mon fichier values ​​/ colors.xml?

Mon problème est que cela ne fonctionnera tout simplement pas. Le passage à l'une de mes couleurs définies laisse toujours l'arrière-plan de TextView à sa couleur par défaut, dans ce cas, le noir. Si j'utilise l'une des couleurs intégrées de Java, cela fonctionne très bien. Je pense que c'est un problème de définition de couleur, quelque chose impliquant comment je définis réellement mes couleurs dans mon XML, mais je ne suis pas sûr.

// This works: 
weight1.setBackgroundColor(Color.BLACK); 

// This does not work: 
weight2.setBackgroundColor(R.color.darkgrey); 

// Color Definition: (this is in a separate xml file, not in my Java code) 
<color name = "darkgrey">#A9A9A9</color> 

Répondre

11

Il ne fonctionne pas parce que vous réglez la couleur de fond à la clé elle-même (qui est une valeur hexadécimale comme 0x7f050008) au lieu de sa valeur. Pour utiliser sa valeur, essayez:

weight2.setBackgroundColor(getResources().getColor(R.color.darkgrey)); 
+1

C'est exactement ça, merci! –

+0

getResources(). GetColor (int) est obsolète. Utilisez setBackgroundResource (int) à la place. – CoolMind

20

En fait, il est encore plus facile avec ceci:

weight2.setBackgroundResource(R.color.darkgrey); 
Questions connexes