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);
Où 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?
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
etColor.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.
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));
et un autre:
TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
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));
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
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" />
il y a plusieurs façons de définir la couleur sur la vue de texte.
-
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)
-
si vous voulez donner le code de couleur directement utiliser la couleur ci-dessous.code parseColor
textView.setTextColor(Color.parseColor("#ffffff"));
-
vous pouvez également utiliser RGB
text.setTextColor(Color.rgb(200,0,0));
-
L'utilisation peut aussi utiliser l'hexcode direct pour textView. Vous pouvez aussi insérer un hexadécimal, comme ceci:
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 ça
text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
je le fais normalement pour toutes les vues:
myTextView.setTextColor(0xAARRGGBB);
où
-
AA définit alpha (00 transparent, FF pour opaque)
-
RRGGBB définit le code de couleur HTML normal (comme FF0000 pour le rouge).
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.
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.
utiliser:
TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
textView.setTextColor(ContextCompat.getColor(getApplicationContext(),R.color.colorWhite));
dans le fichier colors.xml
, écrivez le code ci-dessous:
<color name="colorWhite">#FFFFFF</color>
holder.text.setTextColor(Color.rgb(200,0,0));
ou
myTextView.setTextColor(0xAARRGGBB);
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"));
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.
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
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"));
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);
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"));
holder.userType.setTextColor(context.getResources().getColor(
R.color.green));
à partir de API 23, getResources().getColor()
est déprécié.
utilisez ceci à la place:
textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
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"));
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.
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"));
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));
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
getColor() est déprécié
alors essayez par là:
tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
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.