1
votes

Comment changer conditionnellement la couleur du texte dans Android?

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.


0 commentaires

4 Réponses :


1
votes

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);


0 commentaires

1
votes

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));


1 commentaires

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‌)



1
votes

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"));


0 commentaires

1
votes

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>


0 commentaires