2009-09-23 15 views
143

La définition de la couleur d'arrière-plan par programme d'un andView TextView ne semble pas fonctionner. Il me manque quelque chose!android TextView: le réglage dynamique de la couleur d'arrière-plan ne fonctionne pas

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

Répondre

278

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

+5

L'API Android est vraiment quelque chose, pourquoi ne pas jeter une erreur? – Tawani

+49

Parce que ce n'est pas une erreur. setBackgroundColor() prend une couleur sous forme numérique (par exemple, 0xFFFF0000 pour le rouge). R.color.white est aussi un nombre. – CommonsWare

+5

D'oh! Cela aurait certainement pu être mieux fait avec des enums plutôt que des ints omniprésents. Merci d'avoir répondu. –

69

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.

+1

Je ne comprends pas tout à fait maintenant (en regardant api doc's) mais ça marche, alors merci! –

+0

Merci, vous m'avez sauvé quelques heures! Maintenant que je connais la solution, cela a du sens pour moi, mais je suis sûr que cela m'aurait pris quelques heures pour comprendre cela par moi-même. – FreewheelNat

+0

Merci. L'API Android est vraiment non intuitive parfois. –

-9

vous pouvez utiliser android:textColor= " quelle que soit la couleur du texte u veulent donner » dans le fichier xml où votre mode texte est déclaré

+2

Couleur d'arrière-plan ... –

52

Pour définir la couleur rouge.

textView.setBackgroundColor(0xfff00000); 

Ou

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

textView.setBackgroundResource(R.color.solid_red); 
+0

bonne réponse ... Je vais voter ce demain .. – Aravindhan

+1

Pour répondre à la réponse de badMonkey étant donné que c'est la réponse la plus populaire, vous devez définir les bits de poids fort à zéro pour la transparence. Je suis pris tout le temps en spécifiant le RVB sans A.Pour définir l'arrière-plan en bleu pur, utilisez 0xff0000ff, pas 0x0000ff ou cela ne fonctionnera pas. – JohnnyLambada

+0

Dans le fichier .xml, la valeur d'un élément ne fonctionne qu'avec les 6 chiffres classiques: # FF0000 –

16

J'ai eu un problème similaire lorsque je créais une couleur numérique sans tenir compte du canal alpha principal, par exemple mytext.setTextColor(0xFF0000) (en pensant que ce serait rouge). la couleur est également 100% transparente comme it = 0x00FF0000; La valeur 100% opaque correcte est 0xFFFF0000 ou mytext.setTextcolor(0xFFFF0000).

+0

Ah, c'est pourquoi mes couleurs se sont trompées! – marlar

1

Jut utiliser

ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, your array list); 
7

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 j'utilisé Android Classe de couleur pour obtenir la valeur int de la chaîne hexadécimale et la 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)); 

post-scriptum posté cette réponse parce que d'autres solutions n'ont pas fonctionné pour moi. J'espère que cela va aider quelqu'un :)

2

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

0

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 comme activité int classe java:

et.setBackgroundResource(R.color.white); 

2.

et.setBackgroundColor(getResources().getColor(R.color.white)); 
       or 
et.setBackgroundColor(Color.parseColor("#ffffff")); 
3
tv.setTextColor(getResources().getColor(R.color.solid_red)); 
7

Juste cette 1 ligne de code a changé l'arrière-plan par programme

tv.setBackgroundColor(Color.parseColor("#808080")); 
+1

Merci mon pote. Cela a vraiment aidé –

1

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 les res-> valeurs-> Couleurs .xml 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 l'arrière-plan comme suit dynamiquement:

    mTextView.setBackgroundResource(R.color.my_color); 
    
1

Si vous souhaitez soutenir toutes les versions, faites ceci:

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

2

ici est 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 ci-dessous le code

textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor)); 

si vous êtes dans l'adaptateur recyclerview utilisation sous le code

textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor)); 

// use holder.textview if you are in onBindviewholder 
//here context is passed from fragment 
Questions connexes