Je crée une application qui affiche des informations à l'utilisateur. Les valeurs des informations doivent figurer dans certains paramètres. S'il y a une erreur, il se peut qu'elles ne soient pas comprises dans ces paramètres. Si la valeur n'est pas dans ces paramètres, je voudrais que la couleur du texte soit rouge (signifiant une erreur). Si les chiffres sont presque incorrects, je voudrais que le texte soit jaune (avertissement significatif). Enfin, si les informations sont correctes, je veux que le texte soit vert. Est-il possible de colorer conditionnellement le texte associé?
J'ai essayé d'utiliser une instruction if
dans mon fichier .java
principal qui utilise tvSteamTemp.setTextColor (R .color.RED);
. Quand je fais cela, il dit qu'il "ne peut pas résoudre le symbole 'couleur'."
J'ai également essayé d'utiliser la valeur hexadécimale pour le rouge dans la même ligne de code que ci-dessus, en la remplaçant par le R.color.RED
. Ceci est revenu avec la même erreur: dire "impossible de résoudre le symbole '# FF0000'."
Voici à quoi je pensais que le code ressemblerait. Quand j'ai fait des recherches, cela ressemblait à ce que les gens disaient de faire, ils n'avaient tout simplement pas le bon code pour définir la couleur du texte.
if(212 > steamTemp){ ***Code to set color to red here*** }else if(235 >= steamTemp && 212 <= steamTemp){ ***Code to set color to yellow here*** }else if(235 < steamTemp){ ***Code to set color to green here***
Si la variable steamTemp est en dessous de 212 degrés Fahrenheit, le textView pour cela est rouge. S'il est compris entre 212 et 235, il est jaune. S'il est supérieur à 235, il est vert. Je pense que je devrais être capable de comprendre l'instruction de condition car il devrait s'agir d'une programmation de base, je ne sais tout simplement pas comment définir la couleur à partir de l'instruction.
4 Réponses :
Essayez d'utiliser
if (steamTemp < 212) { // red } else if (steamTemp <= 235) { // yellow } else { // green }
ou
textView.setTextColor(Color.parseColor("#FF0000"));
Sur les ifs, vous pouvez essayer
textView.setTextColor(Color.RED);
Disons que votre couleur: # FF0000
est définie dans colors.xml
steamTemp.setTextColor(getResources().getColor(android.R.color.holo_red_dark));
Ou utilisez les couleurs prédéfinies Android:
steamTemp.setTextColor(getResources().getColor(R.color.nameOfYourColor));
yupi getResources (). getColor (android.R.color.holo_red_dark) est obsolète depuis Android 6.0, vous devez donc utiliser ContextCompact.getColor (getContext (), R.color.your_color_code)
c'est très simple, regardez la classe Color d'Android:
tv.setTextColor(getResources().getColor(R.color.yourDeclaredColor));
ou couleur de la ressource:
tv.setTextColor(Color.RED); //or tv.setTextColor(Color.parseColor("#FF0000"));
J'ai examiné chaque réponse ci-dessus
Je suggérerais de ne pas utiliser
tv.setTextColor(ContextCompat.getColor(getContext(),R.color.your_color_code));
Maintenant, il est obsolète depuis Android 6.0 (API 22+), vous devez donc utiliser:
tv.setTextColor(getContext().getColor(R.color.your_color_code,theme));
OU la classe Context Compat pour cela
getResources().getColor(R.color.your_color_code)
p>