En XML, nous pouvons définir une couleur de texte par l' textColor
attribut, comme android:textColor="#FF0000"
. Mais comment puis-je le changer en codant?
J'ai essayé quelque chose comme:
holder.text.setTextColor(R.color.Red);
Où holder
est juste une classe et text
est de type TextView
. Le rouge est une valeur RVB (# FF0000) définie dans des chaînes.
Mais il montre une couleur différente plutôt que rouge. Quel type de paramètre pouvons-nous passer dans setTextColor ()? Dans la documentation, il est dit int
, mais est-ce une valeur de référence de ressource ou autre chose?
Réponses:
Tu devrais utiliser:
Vous pouvez utiliser diverses fonctions de la
Color
classe pour obtenir le même effet bien sûr.Color.parseColor
(Manuel) (comme les utilisations LEX)Color.rgb
etColor.argb
( Manual rgb ) ( Manual argb ) (comme Ganapathy utilise)Et bien sûr, si vous souhaitez définir votre couleur dans un
XML
fichier, vous pouvez le faire:parce que la
getColor()
fonction est obsolète 1 , vous devez l'utiliser comme ceci:Vous pouvez également insérer du HEX ordinaire, comme ceci:
Où vous avez d'abord un canal alpha, puis la valeur de la couleur.
Consultez le manuel complet bien sûr, la classe publique Color étend Object .
1 Ce code était également présent ici:
Cette méthode est désormais déconseillée dans Android M. Vous pouvez cependant l'utiliser à partir de contextCompat dans la bibliothèque de support , comme le montre maintenant l'exemple.
la source
getColor(int)
est obsolète.Si vous souhaitez toujours spécifier vos couleurs dans votre fichier XML:
Puis référencez-le dans votre code avec l'une de ces deux méthodes:
ou
Le premier est probablement préférable si vous compilez avec Android M, mais le thème que vous transmettez peut être nul, alors c'est peut-être plus facile pour vous?
Et si vous utilisez la bibliothèque Compat, vous pouvez faire quelque chose comme ça
la source
getColor(int)
est obsolète.ContextCompat.getColor(getContext(), R.color.yourColor);
semble être le remplaçant.Et un autre:
la source
getResources()
est une fonction membre Context. Pour les adaptateurs, utilisezgetContext().getResources()
. Les valeurs de couleur doivent aller dans les ressources, comme dans la réponse de @ xbakesx.Vous ne pouvez le faire qu'à partir d'un fichier XML également.
Créez un
color.xml
fichier dans le dossier des valeurs:Ensuite, dans n'importe quel fichier XML, vous pouvez définir la couleur du texte en utilisant,
Ou vous pouvez utiliser cette couleur dans un fichier Java:
la source
Vous pouvez utiliser
Vous pouvez également spécifier la couleur souhaitée avec Transparence.
a pour valeur Alpha (Transparent) r-rouge g-vert b-bleu
la source
utilisez le code suivant dans layout.xml
la source
Il existe de nombreuses façons de définir la couleur dans la vue texte.
Ajoutez une valeur de couleur dans studio res-> values-> colors.xml as
Définissez maintenant la couleur dans la classe xml ou actvity comme
Si vous souhaitez donner un code couleur directement, utilisez ci-dessous le code Color.parseColor
Vous pouvez également utiliser RVB
L'utilisation peut également utiliser le code hexadécimal direct pour textView. Vous pouvez également insérer du HEX ordinaire, comme ceci:
Vous pouvez également utiliser argb avec des valeurs alpha.
a pour Alpha (Transparent) v.
Et si vous utilisez la bibliothèque Compat, vous pouvez faire quelque chose comme ça
la source
Je fais normalement cela pour toutes les vues:
où
AA définit alpha (00 pour transparent, FF pour opaque)
RRGGBB définit le code couleur HTML normal (comme FF0000 pour le rouge).
la source
Si vous prévoyez d'utiliser setTextAppearance, vous devez savoir qu'il remplacera la couleur du texte par le style hérité du thème. Donc, si vous souhaitez utiliser les deux, définissez la couleur par la suite .
Cela marche:
Bien que cela fasse que votre couleur de texte soit par exemple blanche (pour le thème sombre) ou noire (pour le thème clair):
Contrairement à cela en XML, l'ordre est arbitraire.
la source
Dans le
colors.xml
fichier, écrivez le code ci-dessous:la source
Je crois que si vous souhaitez spécifier une couleur en tant que ressource (dans le fichier XML ), vous devrez fournir sa valeur ARGB (pas simplement la valeur RVB).
Essayez de changer la valeur de votre couleur en
#FFFF0000
. Cela devrait vous donner ROUGE.la source
text.setTextColor(getResource().getColor(R.color.black))
vous avez créé une couleur noire dans color.xml.OU
text.setTextColor(Color.parseColor("#000000"))
ici tapez le code hexadécimal souhaitéOU
text.setTextColor(Color.BLACK)
vous pouvez utiliser des champs de couleurs statiquesla source
Utilisation:
la source
ou
la source
À l'aide de l'adaptateur, vous pouvez définir la couleur du texte en utilisant ce code:
la source
Le code ci-dessus fonctionne de mon côté. Voici
text
un TextView sur lequel la couleur doit être définie.la source
la source
À partir de l'API 23,
getResources().getColor()
est obsolète.Utilisez-le à la place:
la source
la source
Dans l'adaptateur, vous pouvez définir la couleur du texte en utilisant ce code:
la source
si vous voulez donner directement un code couleur, utilisez
ou si vous voulez donner un code de couleur à partir du dossier de couleurs, utilisez
la source
Pour définir la couleur d'un TextView, cela
TextView.setTextColor(R.color.YOURCOLOR)
ne suffit pas!Il doit être utilisé comme ça -
OU
la source
la source
De même, j'utilisais
color.xml
:Pour définir l'
TextView
arrière - plan comme:J'obtenais une couleur différente, mais lorsque j'ai utilisé le code ci-dessous, j'ai obtenu la couleur réelle.
la source
J'ai fait de cette façon: Créez un fichier XML, appelé Couleurs dans le dossier res / values.
My Colours.xml:
Pour obtenir ces couleurs du fichier xml, j'ai utilisé ce code: valor c'est un TextView, et ctx c'est un objet Context. Je ne l'utilise pas à partir d'une activité, mais d'un BaseAdapter à un ListView. C'est pourquoi j'ai utilisé cet objet contextuel.
J'espère que cela aide.
la source
Pour fournir des valeurs RVB:
text.setTextColor(Color.rgb(200,0,0));
Pour analyser la couleur à partir d'une valeur hexadécimale:
text.setTextColor(Color.parseColor("#FFFFFF"));
la source
Si vous êtes dans un adaptateur et souhaitez toujours utiliser une couleur définie dans les ressources, vous pouvez essayer l'approche suivante:
la source
la source
getColor () est obsolète
Essayez donc de cette façon:
la source
Je faisais cela pour un TextView dans un ViewHolder pour un RecyclerView. Je ne sais pas trop pourquoi, mais cela n'a pas fonctionné pour moi dans l'initialisation de ViewHolder.
Mais quand je l'ai déplacé vers onBindViewHolder, cela a bien fonctionné.
J'espère que cela aide quelqu'un.
la source