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);
Où 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?
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.
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));
Et un autre:
TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
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));
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
Il existe de nombreuses manières différentes de définir la couleur sur la vue du texte.
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)
Si vous souhaitez donner un code de couleur directement, utilisez ci-dessous le code Color.parseColor
textView.setTextColor(Color.parseColor("#ffffff"));
Vous pouvez également utiliser RVB
text.setTextColor(Color.rgb(200,0,0));
Utilisez peut aussi utiliser hexcode direct pour textView. Vous pouvez également insérer un code HEX simple, comme suit:
text.setTextColor(0xAARRGGBB);
Vous pouvez également utiliser argb avec des valeurs alpha.
text.setTextColor(Color.argb(0,200,0,0));
a pour Alpha (transparent) v.
Et si vous utilisez la bibliothèque Compat, vous pouvez faire quelque chose comme ceci
text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
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" />
Je le fais normalement pour toutes les vues:
myTextView.setTextColor(0xAARRGGBB);
où
AA définit alpha (00 pour transparent, FF pour opaque)
RRGGBB définit le code de couleur HTML normal (comme FF0000 pour le rouge).
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.
textView.setTextColor(ContextCompat.getColor(getApplicationContext(),R.color.colorWhite));
Dans le fichier colors.xml
, écrivez dans le code ci-dessous:
<color name="colorWhite">#FFFFFF</color>
holder.text.setTextColor(Color.rgb(200,0,0));
ou
myTextView.setTextColor(0xAARRGGBB);
Utilisation:
TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
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
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.
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"));
text1.setTextColor(Color.parseColor("#000000"));
À partir de l'API 23, getResources().getColor()
est obsolète.
Utilisez ceci à la place:
textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
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"));
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);
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"));
holder.userType.setTextColor(context.getResources().getColor(
R.color.green));
textViewStatus.setTextColor(res.getColor(R.color.green));
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"));
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"));
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.
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.
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.
getColor () est obsolète
Alors essayez de cette façon:
tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
Essaye ça:
textView.setTextColor(getResources().getColor(R.color.errorColor, null));
Essaye ça:
TextView textview = (TextView) findViewById(R.id.textview );
textview .setTextColor(Color.parseColor("#85F85F"));
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
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));