android TextView: définir la couleur d'arrière-plan ne fonctionne pas de façon dynamique

StackOverflow https://stackoverflow.com/questions/1466788

  •  13-09-2019
  •  | 
  •  

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");
Était-ce utile?

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:

  1. Tout d'abord, déclarer une instance de TextView dans votre MainActivity.java comme suit:

    TextView mTextView;
    
  2. Définir un texte DYNAMIQUEMENT (si vous voulez) 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 Colors.xml res-> valeurs-> comme suit:

    <resources>
        <color name="my_color">#000000</color>
    </resources>
    
  4. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top