web-dev-qa-db-fra.com

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

En XML, nous pouvons définir une couleur de texte à l'aide de l'attribut textColor, comme Android:textColor="#FF0000". Mais comment puis-je le changer en codant?

J'ai essayé quelque chose comme:

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

holder n'est qu'une classe et text est de type TextView. Le rouge est une valeur RVB (# FF0000) définie dans des chaînes.

Mais il montre une couleur différente plutôt que le rouge. Quel type de paramètre pouvons-nous passer dans setTextColor ()? Dans la documentation, il est indiqué int, mais s'agit-il d'une valeur de référence de ressource ou de quelque chose d'autre?

511
Vikas

Tu devrais utiliser:

holder.text.setTextColor(Color.RED);

Pour un contrôle de sécurité, je viens de l'essayer, car j'avais un projet ouvert de toute façon, et oui, c'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 ( Manual rgb ) ( Manual 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 obsolète1, vous devez l’utiliser comme suit:

    ContextCompat.getColor(context, R.color.your_color);
    
  • Vous pouvez également insérer un code HEX simple, comme suit:

    myTextView.setTextColor(0xAARRGGBB);
    

    Où vous avez un canal alpha en premier, puis la valeur de la couleur.

Consultez le manuel complet bien sûr, classe publique Color étend Object.


1Ce code était aussi ici:

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

Cette méthode est désormais obsolète dans Android M. Vous pouvez toutefois l'utiliser à partir de contextCompat dans la bibliothèque de support , comme le montre l'exemple à présent.

1175
Nanne

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

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

Ensuite, référencez-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 avec Android M, mais le thème que vous transmettez peut être nul, alors 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));
135
xbakesx

Et un autre:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
45
LEX

Vous pouvez également le faire à partir d'un fichier XML.

Créez un fichier color.xml dans le dossier de valeurs:

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

</resources>

Ensuite, dans n'importe quel fichier XML, vous pouvez définir la couleur du texte à l'aide de,

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));
37
newday

Vous pouvez utiliser

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

Vous pouvez également spécifier la couleur de votre choix avec Transparency.

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

a pour alpha (transparent) valeur r-rouge g-vert b-bleu

27
Ganapathy C

Il existe de nombreuses manières différentes de définir la couleur sur la vue du texte.

  1. Ajouter une valeur de couleur dans studio res-> values-> colors.xml as

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

    Définissez maintenant la couleur dans la classe xml ou actvity comme

    text.setTextColor(getResources().getColor(R.color.color_purple)
    
  2. Si vous souhaitez donner un code de couleur directement, utilisez ci-dessous le code Color.parseColor

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

    text.setTextColor(Color.rgb(200,0,0));
    
  4. Utilisez peut aussi utiliser hexcode direct pour textView. Vous pouvez également insérer un code HEX simple, comme suit:

    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 ceci

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
    
15
Rank

utilisez le code suivant dans layout.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" />
14
Chinna

Je le fais normalement pour toutes les vues:

myTextView.setTextColor(0xAARRGGBB);

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

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

9
A.W

Si vous envisagez d'utiliser setTextAppearance, vous devez savoir qu'il remplacera la couleur du texte par le style hérité du thème. Donc, si vous voulez utiliser les deux, définissez la couleur après.

Cela marche:

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

Par conséquent, votre couleur de texte sera par exemple blanche (pour le thème sombre) ou noire (pour le thème de lumière):

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

Contrairement à cela en XML, l'ordre est arbitraire.

8
Robin Gawenda

Je crois que si vous souhaitez spécifier une couleur en tant que ressource (dans le fichier XML ), vous devrez fournir sa valeur ARGB (pas simplement la valeur RVB).

Essayez de changer votre valeur de couleur en #FFFF0000. Il devrait vous donner le rouge.

6
Arnab Chakraborty
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

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

<color name="colorWhite">#FFFFFF</color>
6
Kaushik Chatterjee
holder.text.setTextColor(Color.rgb(200,0,0));

ou

myTextView.setTextColor(0xAARRGGBB);
5
Yash Patil

Utilisation:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
5
Talha

text.setTextColor(getResource().getColor(R.color.black)) vous avez créé une couleur noire dans color.xml.

OR

text.setTextColor(Color.parseColor("#000000")) saisissez ici le code hexadécimal souhaité

OR

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

5
Nitish
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.

4
Evon Technology

En utilisant Adapter, vous pouvez définir 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"));
4
Hiren Patel
text1.setTextColor(Color.parseColor("#000000"));
4
Ravina Bhavsar

À partir de l'API 23, getResources().getColor() est obsolète.

Utilisez ceci à la place:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
2
PJ2104

Dans Adapter, vous pouvez définir la couleur du texte à l’aide de ce code:

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
1
user2285778

si vous voulez donner un code de couleur directement, utilisez

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

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

textView.setTextColor(R.color.white);
1
reshma

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

Il doit être utilisé comme ça -

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

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

OR

myText.setTextColor(Color.parseColor("#54D66A"));
1
IntelliJ Amiya
holder.userType.setTextColor(context.getResources().getColor(
                    R.color.green));
1
Harish Gyanani
   textViewStatus.setTextColor(res.getColor(R.color.green));
1
zudo1337

Pour fournir des valeurs en RVB: text.setTextColor(Color.rgb(200,0,0));
Pour analyser la couleur à partir d'une valeur hexadécimale: text.setTextColor(Color.parseColor("#FFFFFF"));

0
Comrade

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

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

Pour définir le fond TextView comme:

textView.setTextColor(R.color.white);

J'avais 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
Raj Sharma

Vous pouvez utiliser textView.setTextColor(Color.BLACK) pour utiliser l’une des couleurs incorporées de la classe Color.

Vous pouvez également utiliser textView.setTextColor(Color.parseColor(hexRGBvalue)) pour définir des couleurs personnalisées.

0
shravs

Je l’ai fait comme suit: 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 Context. Je ne l'utilise pas à partir d'une activité, mais d'un BaseAdapter à un ListView. C'est pourquoi j'ai utilisé cet objet de contexte.

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

J'espère que ça aide.

0
Cristiano Guerra

Je faisais cela pour un TextView dans un ViewHolder pour un RecyclerView. Je ne sais pas trop pourquoi, mais cela n’a pas fonctionné lors de l’initialisation de ViewHolder.

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 lorsque je l'ai déplacé vers le onBindViewHolder, cela a bien fonctionné.

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

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

0
IsaiahJ

getColor () est obsolète

Alors essayez de cette façon:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
0
kgandroid

Essaye ça:

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

Essaye ça:

TextView textview = (TextView) findViewById(R.id.textview );
textview .setTextColor(Color.parseColor("#85F85F"));
0
mohamad sheikhi
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
0
Pedro Lobito

Si vous utilisez un adaptateur et souhaitez toujours utiliser une couleur définie dans les ressources, vous pouvez essayer l'approche suivante:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
0
Aleks Nine