2010-09-08 5 views
53

Dans le fichier string.xml j'utiliser la balise suivanteComment définir la couleur d'un TextView dans Android?

<color name="mycolor1">#F5DC49</color> 

Si je

textview1.setTextColor(Color.CYAN); 

cela fonctionne, mais

textview1.setTextColor(R.color.mycolor1); 

ne fonctionne pas. Comment utiliser la couleur définie dans le fichier XML?

Comment utiliser la couleur définie dans le fichier XML?

Répondre

79

TextView.setTextColor() prend un int représentant la couleur (par exemple 0xFFF5DC49) et non l'ID de ressource du fichier xml. Dans une activité, vous pouvez faire quelque chose comme:

textView1.setTextColor(getResources().getColor(R.color.mycolor)) 

en dehors d'une activité que vous aurez besoin d'un Context par exemple.

textView1.setTextColor(context.getResources().getColor(R.color.mycolor)) 
20
textView1.setTextColor(Color.parseColor("#F5DC49")); 

sans ressources

12

context.getResources().getColor est dépréciée.

Vous devez utiliser ContextCompat.getColor(), qui fait partie de la bibliothèque V4 support (il fonctionnera pour toute l'API précédente).

ContextCompat.getColor(context, R.color.my_color); 

Vous devrez ajouter la bibliothèque V4 support en ajoutant ce qui suit au tableau dependencies dans votre application build.gradle:

compile 'com.android.support:support-v4:23.0.1' # or any version above 

Si vous vous souciez de thématisation, la documentation précise que la méthode utilisera le thème du contexte:

à partir de M, la couleur retournée sera de style pour le thème spécifié contexte

Questions connexes