web-dev-qa-db-fra.com

android TextView: la définition dynamique de la couleur d'arrière-plan ne fonctionne pas

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

Utiliser et.setBackgroundResource(R.color.white);

315
bhatt4982

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.

72
Seb DA ROCHA

Pour définir la couleur rouge:

textView.setBackgroundColor(0xfff00000);

Ou

<color name="solid_red">#fff00000</color>

textView.setBackgroundResource(R.color.solid_red);
64
Dmitry

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

20
badMonkey

Seulement cette ligne de code a changé l’arrière-plan par programmation

tv.setBackgroundColor(Color.parseColor("#808080"));
9
Vivek Warde

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

8
user1252459

Voici les étapes pour le faire correctement:

  1. Tout d’abord, déclarez une instance de TextView dans votre MainActivity.Java comme suit:

    TextView mTextView;
    
  2. Définissez du texte DYNAMIQUEMENT (si vous le souhaitez) comme suit:

    mTextView.setText("some_text");
    
  3. 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>
    
  4. 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);
    
4
Sahil Sharma

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
4
dharmx
tv.setTextColor(getResources().getColor(R.color.solid_red));
4
Yash Patil

Color.parseHexColor("17ee27") n'a pas fonctionné pour moi, mais Color.parseColor("17ee27") a parfaitement fonctionné.

3
Siddharth

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

Si vous souhaitez prendre en charge toutes les versions, procédez comme suit:

myTextView.setBackgroundColor (ContextCompat.getColor (this, R.color.mycolor));

2
Mladen Rakonjac

Jut utiliser

ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this,
            Android.R.layout.simple_dropdown_item_1line, your array list);
1
Pavan Anadkat