Comment définir la couleur du texte de TextView en code?

en XML, nous pouvons définir une couleur de texte par l'attribut textColor , comme android:textColor="#FF0000" . Mais comment puis-je le changer en codage?

j'ai essayé quelque chose comme:

holder.text.setTextColor(R.color.Red);

holder est juste une classe et text est de type TextView . Le rouge est une valeur RGB (#FF0000) définie dans strings.

mais il montre une couleur différente plutôt que rouge. Quel type de paramètre peut-on passer dans setTextColor()? Dans la documentation, c'est écrit int , mais est-ce une valeur de référence de la ressource ou autre chose?

462
demandé sur Peter Mortensen 2011-01-05 13:14:58

30 réponses

vous devez utiliser:

holder.text.setTextColor(Color.RED);

pour un contrôle de santé, je viens de l'essayer, parce que j'avais un projet ouvert de toute façon, et oui, il est beau et rouge ;d


vous pouvez utiliser diverses fonctions de la classe Color pour obtenir le même effet bien sûr.

  • Color.parseColor (manuel) (comme LEX utilise)

    text.setTextColor(Color.parseColor("#FFFFFF"));
    
  • Color.rgb et Color.argb ( manuel rgb ) ( manuel argb ) (comme Ganapathy utilise)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
    
  • et bien sûr, si vous voulez définir votre couleur dans un fichier XML , vous pouvez le faire:

    <color name="errorColor">#f00</color>
    

    parce que la fonction getColor() est dépréciée 1 , vous devez l'utiliser comme suit:

    ContextCompat.getColor(context, R.color.your_color);
    
  • vous pouvez aussi insérer un hexagone, comme ceci:

    myTextView.setTextColor(0xAARRGGBB);
    

    où vous avez d'abord un canal alpha, puis la valeur de la couleur.

consultez le manuel complet bien sûr, public class Color extends Object .


1 ce code était ici aussi:

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

cette méthode est maintenant dépréciée dans Android M. Vous pouvez toutefois l'utiliser à partir de la contextCompat dans la bibliothèque de soutien , comme l'exemple le montre maintenant.

1086
répondu Nanne 2017-05-23 12:18:22

si vous souhaitez toujours spécifier vos couleurs dans votre fichier XML:

<color name="errorColor">#f00</color>

alors référez-le dans votre code avec l'une de ces deux méthodes:

textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));    

ou

textView.setTextColor(getResources().getColor(R.color.errorColor, null));

Le premier est probablement préférable si vous compilez contre Android M, cependant le thème vous passez peut être null, peut-être que c'est plus facile pour vous?

et si vous utilisez la bibliothèque Compat vous pouvez faire quelque chose comme ceci

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
130
répondu xbakesx 2015-12-07 18:21:51

et un autre:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
42
répondu LEX 2014-03-16 16:37:27

vous pouvez faire cela seulement à partir d'un fichier XML aussi.

créer un color.xml fichier dans le dossier valeurs:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="textbody">#ffcc33</color>

</resources>

puis dans n'importe quel fichier XML, vous pouvez définir la couleur pour le texte en utilisant,

android:textColor="@color/textbody"

Ou vous pouvez utiliser cette couleur dans un fichier Java:

final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));
35
répondu newday 2014-03-16 16:38:30

vous pouvez utiliser

holder.text.setTextColor(Color.rgb(200,0,0));

vous pouvez également spécifier quelle couleur vous voulez avec la transparence.

holder.text.setTextColor(Color.argb(0,200,0,0));

a pour Alpha valeur (transparente) R-Rouge G-vert b-Bleu

25
répondu Ganapathy C 2012-07-24 18:31:42

utilisez le code suivant dans la mise en page.xml

<TextView  android:id="@+id/textView1"    
android:layout_width="wrap_content"    
android:layout_height="wrap_content" 
android:text="@string/add"
android:layout_marginTop="16dp"
android:textAppearance="?
android:attr/textAppearanceMedium"
android:textColor="#25383C"
android:textSize="13sp" />

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add"
        android:layout_marginTop="16dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#25383C"
        android:textSize="13sp" />
11
répondu Chinna 2015-01-09 14:09:48

il y a plusieurs façons de définir la couleur sur la vue de texte.

  1. ajouter la valeur de couleur dans studio res->valeurs->couleurs.xml comme

    <color name="color_purple">#800080</color>
    

    définit maintenant la couleur en xml ou la classe d'activité comme

    text.setTextColor(getResources().getColor(R.color.color_purple)
    
  2. si vous voulez donner le code de couleur directement utiliser la couleur ci-dessous.code parseColor

    textView.setTextColor(Color.parseColor("#ffffff"));   
    
  3. vous pouvez également utiliser RGB

    text.setTextColor(Color.rgb(200,0,0));
    
  4. L'utilisation peut aussi utiliser l'hexcode direct pour textView. Vous pouvez aussi insérer un hexadécimal, comme ceci:

    text.setTextColor(0xAARRGGBB);
    
  5. vous pouvez également utiliser argb avec des valeurs alpha.

       text.setTextColor(Color.argb(0,200,0,0));
    

    a pour Alpha (Transparent) v.

  6. et si vous utilisez la bibliothèque Compat vous pouvez faire quelque chose comme ça

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
    
11
répondu Rank 2017-02-08 02:36:43

je le fais normalement pour toutes les vues:

myTextView.setTextColor(0xAARRGGBB);

  • AA définit alpha (00 transparent, FF pour opaque)

  • RRGGBB définit le code de couleur HTML normal (comme FF0000 pour le rouge).

8
répondu A.W 2014-03-16 16:38:59

si vous prévoyez d'utiliser setTextAppearance vous devez savoir qu'il va écraser la couleur du texte avec le style hérité du thème. Donc si vous voulez utiliser les deux, mettez la couleur après .

Cela fonctionne:

textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);

alors que cela va provoquer votre textcolor à être par exemple blanc (pour le thème sombre) ou noir(pour le thème lumière):

textView.setTextColor(Color.RED);
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);

contrairement à ceci en XML l'ordre est arbitraire.

7
répondu Robin Gawenda 2012-09-10 10:09:45

je crois que si vous voulez spécifier une couleur comme ressource (dans le fichier XML ), vous devrez fournir sa valeur ARGB (pas simplement la valeur RGB).

essayez de changer votre valeur de couleur en #FFFF0000 . Il devrait vous donner ROUGE.

5
répondu Arnab Chakraborty 2014-03-16 16:46:03

utiliser:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
4
répondu Talha 2014-03-16 16:46:26
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

dans le fichier colors.xml , écrivez le code ci-dessous:

<color name="colorWhite">#FFFFFF</color>
4
répondu Kaushik Chatterjee 2018-01-05 19:38:07
holder.text.setTextColor(Color.rgb(200,0,0));

ou

myTextView.setTextColor(0xAARRGGBB);
4
répondu Yash Patil 2018-08-31 01:17:14

avec adaptateur vous pouvez régler la couleur du texte en utilisant ce code:

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
3
répondu Hiren Patel 2014-03-16 16:39:55
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

le code ci-dessus fonctionne de mon côté. Ici text est un TextView sur lequel la couleur doit être définie.

3
répondu Evon Technology 2017-05-24 13:31:44
text1.setTextColor(Color.parseColor("#000000"));
3
répondu Ravina Bhavsar 2018-08-31 01:16:55

text.setTextColor(getResource().getColor(R.color.black)) vous avez créer la couleur Noire en couleur.XML.

ou

text.setTextColor(Color.parseColor("#000000")) Tapez ici l'hexcode désiré

ou

text.setTextColor(Color.BLACK) vous pouvez utiliser des champs de couleurs statiques

2
répondu Nitish 2018-08-30 10:09:41
   textViewStatus.setTextColor(res.getColor(R.color.green));
1
répondu zudo1337 2013-04-29 10:45:39

dans Adaptateur, vous pouvez définir la couleur du texte en utilisant ce code:

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
1
répondu Peter Mortensen 2014-03-16 16:39:21

si vous voulez donner un code de couleur directement, utilisez

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

ou si vous voulez donner le code de couleur de couleurs de dossier puis utiliser

textView.setTextColor(R.color.white);
1
répondu reshma 2014-05-08 07:05:07

pour définir la couleur d'un TextView, TextView.setTextColor(R.color.YOURCOLOR) n'est pas assez!

il doit être utilisé comme ceci -

TextView myText = (TextView) findViewById(R.id.YoutTextViewID);

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

ou

myText.setTextColor(Color.parseColor("#54D66A"));
1
répondu IntelliJ Amiya 2015-04-19 09:10:55
holder.userType.setTextColor(context.getResources().getColor(
                    R.color.green));
1
répondu Harish Gyanani 2015-10-21 11:13:21

à partir de API 23, getResources().getColor() est déprécié.

utilisez ceci à la place:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
1
répondu PJ2104 2017-12-11 10:17:40

de même, j'utilisais color.xml :

<color name="white">#ffffff</color>
    <color name="black">#000000</color>   

pour définir le TextView arrière-plan comme:

textView.setTextColor(R.color.white);

j'obtenais une couleur différente, mais quand j'ai utilisé le code ci-dessous, j'ai obtenu la couleur réelle.

textView.setTextColor(Color.parseColor("#ff6363"));
0
répondu Raj Sharma 2014-03-16 16:47:40

j'ai fait comme ça: Créez un fichier XML, appelé couleurs dans le dossier res/values.

Mes Couleurs.xml:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="vermelho_debito">#cc0000</color>
    <color name="azul_credito">#4c4cff</color>
    <color name="preto_bloqueado">#000000</color>
    <color name="verde_claro_fundo_lista">#CFDBC5</color>
    <color name="branco">#ffffff</color>
    <color name="amarelo_corrige">#cccc00</color>
    <color name="verde_confirma">#66b266</color>
</resources>

pour obtenir ces couleurs à partir du fichier xml, j'ai utilisé ce code: valor c'est un TextView, et ctx c'est un objet contextuel. Je ne l'utilise pas à partir d'une activité, mais D'une BaseAdapter vers une ListView. C'est pourquoi j'ai utilisé cet objet contextuel.

valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));

J'espère que ça aidera.

0
répondu Cristiano Guerra 2014-10-17 12:19:53

pour fournir des valeurs RVB: text.setTextColor(Color.rgb(200,0,0));

Pour l'analyse de la couleur à partir d'une valeur hexadécimale: text.setTextColor(Color.parseColor("#FFFFFF"));

0
répondu Comrade 2015-02-26 21:39:01

Si vous êtes dans un adaptateur et souhaitez utiliser une couleur définie dans les ressources, vous pouvez essayer la méthode suivante:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
0
répondu Aleks Nine 2015-08-18 13:55:41
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
0
répondu Pedro Lobito 2015-09-23 22:55:27

getColor() est déprécié

alors essayez par là:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
0
répondu kgandroid 2016-09-02 10:43:39

je faisais ça pour un TextView dans un viseur pour un RecyclerView. Je ne sais pas trop pourquoi, mais ça n'a pas marché pour moi dans l'initialisation des Viewholders.

public ViewHolder(View itemView) {
    super(itemView);
    textView = (TextView) itemView.findViewById(R.id.text_view);
    textView.setTextColor(context.getResources().getColor(R.color.myColor));
    // Other stuff
}

mais quand je l'ai déplacé à la onBindViewHolder, il a fonctionné très bien.

public void onBindViewHolder(ViewHolder holder, int position){
    // Other stuff
    holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}

J'espère que ça aidera quelqu'un.

0
répondu IsaiahJ 2016-11-02 09:27:18