Définir la couleur de fond par programme d'un Android TextView
ne semble pas fonctionner. 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 mon dossier res/values
<resources>
<color name="white">#ffffffff</color>
<color name="black">#ff000000</color>
</resources>
[MODIFIER]: De plus, si vous définissez la couleur du texte, TextView disparaîtra.
TextView c1 = new TextView(activity);
c1.setTextColor(R.color.solid_red);
c1.setText("My Text");
Utiliser et.setBackgroundResource(R.color.white);
Essaye ça:
TextView c1 = new TextView(activity);
c1.setTextColor(getResources().getColor(R.color.solid_red));
c1.setText("My Text");
Je conviens qu'une couleur et une ressource ont le même type, mais je passe également quelques heures à 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 prendre en compte le canal alpha principal. c'est à dire. mytext.setTextColor(0xFF0000)
(pensant que ce serait rouge). Bien qu'il s'agisse d'une couleur rouge, elle est également transparente à 100% en tant que it = 0x00FF0000;
. La valeur opaque à 100% correcte est 0xFFFF0000
ou mytext.setTextcolor(0xFFFF0000)
.
Seulement cette ligne de code a changé l’arrière-plan par programmation
tv.setBackgroundColor(Color.parseColor("#808080"));
Il m'est bien arrivé que le service Web renvoie une couleur au format hexadécimal telle que "# CC2233" et que je veuille mettre cette couleur sur textView à l'aide de setBackGroundColor (), j'ai donc utilisé Android classe de couleur pour obtenir la valeur int de chaîne hexadécimale et passée à la fonction mentionnée. Tout a fonctionné. C'est exemple:
String myHexColor = "#CC2233";
TextView myView = (TextView) findViewById(R.id.myTextView);
myView.setBackGroundColor(Color.pasrsehexString(myHexColor));
P.S. posté cette réponse car d’autres solutions ne fonctionnaient pas pour moi. J'espère que cela aidera quelqu'un :)
Voici les étapes pour le faire correctement:
Tout d’abord, déclarez une instance de TextView dans votre MainActivity.Java comme suit:
TextView mTextView;
Définissez du texte DYNAMIQUEMENT (si vous le souhaitez) 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 res-> valeurs-> couleurs.xml comme suit:
<resources>
<color name="my_color">#000000</color>
</resources>
Vous pouvez maintenant utiliser la couleur "my_color" dans votre fichier Java pour définir l’arrière-plan de manière dynamique comme suit:
mTextView.setBackgroundResource(R.color.my_color);
voici en petit détail,
si vous êtes en activité utilisez ceci
textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor));
si vous êtes dans le fragment utilisez le code ci-dessous
textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor));
si vous utilisez un adaptateur recyclerview, utilisez le code ci-dessous.
textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor));
// use holder.textview if you are in onBindviewholder
//here context is passed from fragment
tv.setTextColor(getResources().getColor(R.color.solid_red));
Color.parseHexColor("17ee27")
n'a pas fonctionné pour moi, mais Color.parseColor("17ee27")
a parfaitement fonctionné.
deux façons de le faire:
1.créer la couleur dans le fichier colors.xml comme:
<resources>
<color name="white">#ffffff</color>
</resources>
et utilisez-la int activité Java classe comme:
et.setBackgroundResource(R.color.white);
2.
et.setBackgroundColor(getResources().getColor(R.color.white));
or
et.setBackgroundColor(Color.parseColor("#ffffff"));
Si vous souhaitez prendre en charge toutes les versions, procédez comme suit:
myTextView.setBackgroundColor (ContextCompat.getColor (this, R.color.mycolor));
Jut utiliser
ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this,
Android.R.layout.simple_dropdown_item_1line, your array list);