web-dev-qa-db-fra.com

TextView setTextColor () ne fonctionne pas

Je crée par programme une liste (pas de ListView, je les ajoute simplement au parent) de tels éléments:

    <LinearLayout Android:layout_width="wrap_content" Android:layout_height="wrap_content" 
    Android:orientation="vertical" Android:layout_weight="1">
    <TextView Android:id="@+id/filiale_name"
    Android:layout_width="fill_parent" Android:layout_height="wrap_content"/>
    <TextView Android:id="@+id/lagerstand_text"
    Android:layout_width="fill_parent" Android:layout_height="wrap_content"
    Android:textSize="10sp" Android:textColor="@color/red"/>
</LinearLayout>

De plus, j'ai défini des couleurs dans values ​​/ colors.xml. Comme vous le voyez, le TextView avec l'id "lagerstand_text" a défini sa couleur en rouge par défaut. Ça marche.

Lors de la création des éléments en Java, je fais

lagerstandText.setText("bla");

et pour certains éléments aussi je fais

lagerstandText.setTextColor(R.color.red);

et d'autres couleurs. Bien que les éléments sur lesquels je n'appelle pas setTextColor () soient en rouge, tous les autres sont en gris, quelle que soit la couleur que j'ai choisie (même si c'est à nouveau le même rouge).

Pourquoi donc?

63
didi_X8

La documentation n'est pas très détaillée à ce sujet, mais vous ne pouvez pas utiliser uniquement l'entier R.color lorsque vous appelez setTextColor. Vous devez appeler getResources().getColor(R.color.YOURCOLOR) pour définir une couleur correctement.

Utilisez ce qui suit pour définir la couleur de votre texte par programme:

textView.setTextColor(getResources().getColor(R.color.YOURCOLOR));

A partir de la bibliothèque de support 23, vous devez utiliser le code suivant, car getColor est obsolète:

textView.setTextColor(ContextCompat.getColor(context, R.color.YOURCOLOR));
199

Donc, il y a plusieurs façons de réaliser cette tâche.

1.

int color = Integer.parseInt("bdbdbd", 16)+0xFF000000;
textview.setTextColor(color);

2.

textView.setTextColor(getResources().getColor(R.color.some_color));

3.

textView.setTextColor(0xffbdbdbd);

4.

textView.setTextColor(Color.parseColor("#bdbdbd"));

5.

textView.setTextColor(Color.argb(a_int, r_int, g_int, b_int));
31
duggu

1. couleur standard vous préférez aller s'il vous plaît avec ci-dessous.

textview.setTextColor(Color.select_color)

2.ici souhaite utiliser custwom color l'ajouter dans un fichier color.xml

textview.setTextColor(getResources().getColor(R.color.textbody));

ou

textView.setTextColor(Color.parseColor("#000000"));

ou

subText.setTextColor(Color.rgb(255,192,0));
1
sneha v

Pour référence future, vous pouvez utiliser les éléments suivants:

String color = getString(Integer.parseInt(String.valueOf(R.color.my_color)));
my_textView.setTextColor(Color.parseColor(color));

De cette façon, vous pouvez utiliser vos ressources de couleur.

1
Chad Mx

L'identificateur d'entier pour une couleur particulière (définie dans la disposition xml) définie dans la classe R ne peut pas être passé en tant que paramètre à la méthode setTextColor() de la classe View .. Vous devez obtenir le paramètre de la fonction setTextColor() par la ligne de code suivante: 

int para=getResources().getColor(R.color.your_color,null);
view.setTextColor(para,null);

La méthode getColor(int id) a été amortie ... utilisez plutôt getColor(int id,Resources.Theme theme) comme dans la ligne de code ci-dessus.

The `second parameter( theme )` can be null
0
Abhi