android TextView: définir la couleur d'arrière-plan ne fonctionne pas de façon dynamique
Question
Réglage de la couleur de fond d'un androïde programatically TextView
ne semble pas fonctionner.
Je suis je manque quelque chose!
TextView et = new TextView(activity);
et.setText("350");
et.setBackgroundColor(R.color.white);
J'ai aussi ce fichier (Colors.xml) dans mes res / valeurs dossier
<resources>
<color name="white">#ffffffff</color>
<color name="black">#ff000000</color>
</resources>
[EDIT]: En outre, le réglage de la couleur du texte provoque la TextView disparaître.
TextView c1 = new TextView(activity);
c1.setTextColor(R.color.solid_red);
c1.setText("My Text");
La solution
Utilisez et.setBackgroundResource(R.color.white);
Autres conseils
Essayez ceci:
TextView c1 = new TextView(activity);
c1.setTextColor(getResources().getColor(R.color.solid_red));
c1.setText("My Text");
Je suis d'accord qu'une couleur et une ressource ont le même type, mais je passe aussi quelques heures pour trouver cette solution.
Pour définir la couleur rouge:
textView.setBackgroundColor(0xfff00000);
ou
<color name="solid_red">#fff00000</color>
textView.setBackgroundResource(R.color.solid_red);
J'ai eu un problème similaire où je créais une couleur numérique sans tenir compte du premier canal alpha. c'est à dire. mytext.setTextColor(0xFF0000)
(pensant que ce serait rouge). Bien que ce soit une couleur rouge, il est aussi 100% transparent it = 0x00FF0000;
La valeur correcte opaque 100% est 0xFFFF0000
ou mytext.setTextcolor(0xFFFF0000)
.
Juste cette 1 ligne de code modifié par programmation l'arrière-plan
tv.setBackgroundColor(Color.parseColor("#808080"));
Eh bien, j'avais la situation lorsque le service Web retourne une couleur au format hexadécimal comme « # CC2233 » et je voulais mettre cette couleur sur textView en utilisant setBackgroundColor (), donc je android classe Color pour obtenir la valeur int de chaîne hexagonale et passer à la fonction mentionnée. Tout a fonctionné. Ceci est par exemple:
String myHexColor = "#CC2233";
TextView myView = (TextView) findViewById(R.id.myTextView);
myView.setBackGroundColor(Color.pasrsehexString(myHexColor));
P.S. posté cette réponse parce que d'autres solutions ne fonctionnent pas pour moi. J'espère que cela aidera quelqu'un:)
Voici les étapes pour le faire correctement:
-
Tout d'abord, déclarer une instance de TextView dans votre MainActivity.java comme suit:
TextView mTextView;
-
Définir un texte DYNAMIQUEMENT (si vous voulez) comme suit:
mTextView.setText("some_text");
-
Maintenant, pour définir la couleur d'arrière-plan, vous devez définir votre propre couleur dans le fichier Colors.xml res-> valeurs-> comme suit:
<resources> <color name="my_color">#000000</color> </resources>
-
Vous pouvez maintenant utiliser la couleur « de my_color » dans votre fichier java pour définir dynamiquement l'arrière-plan comme suit:
mTextView.setBackgroundResource(R.color.my_color);
tv.setTextColor(getResources().getColor(R.color.solid_red));
est ici peu de détails,
si vous êtes en cours d'utilisation de l'activité ce
textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor));
si vous êtes dans l'utilisation du fragment de code ci-dessous
textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor));
si vous êtes en cours d'utilisation de l'adaptateur recyclerview ci-dessous le code
textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor));
// use holder.textview if you are in onBindviewholder
//here context is passed from fragment
Color.parseHexColor("17ee27")
n'a pas fonctionné pour moi, à la place Color.parseColor("17ee27")
a parfaitement fonctionné.
deux façons de le faire:
couleur 1.Créez dans le fichier Colors.xml comme:
<resources>
<color name="white">#ffffff</color>
</resources>
et utiliser l'activité int classe java comme:
et.setBackgroundResource(R.color.white);
2.
et.setBackgroundColor(getResources().getColor(R.color.white));
or
et.setBackgroundColor(Color.parseColor("#ffffff"));
Si vous souhaitez soutenir toutes les versions, faites ceci:
myTextView.setBackgroundColor (ContextCompat.getColor (ce qui, R.color.mycolor));
Jut utiliser
ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, your array list);
vous pouvez utiliser android:textColor= "
quelle que soit la couleur du texte u veulent donner » dans le fichier xml où votre affichage de texte est déclarée.