¿Cómo configurar el color del texto de TextView en el código?

Resuelto Vikas asked hace 54 años • 40 respuestas

En XML, podemos establecer un color de texto mediante el textColoratributo, como android:textColor="#FF0000". ¿Pero cómo lo cambio codificando?

Intenté algo como:

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

Donde holderes solo una clase y textes de tipo TextView. El rojo es un valor RGB (#FF0000) establecido en cadenas.

Pero muestra un color diferente al rojo. ¿Qué tipo de parámetro podemos pasar en setTextColor()? En la documentación dice int, pero ¿es un valor de referencia de recurso o algo más?

Vikas avatar Jan 01 '70 08:01 Vikas
Aceptado

Deberías usar:

holder.text.setTextColor(Color.RED);

Puedes usar varias funciones de la Colorclase para obtener el mismo efecto, por supuesto.

  • Color.parseColor (Manual) (como los que usa LEX)

    text.setTextColor(Color.parseColor("#FFFFFF"));
    
  • Color.rgby Color.argb( Manual rgb ) ( Manual argb ) (como usa Ganapathy)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
    
  • Y por supuesto, si quieres definir tu color en un XMLarchivo, puedes hacer esto:

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

    Debido a que la getColor()función está en desuso 1 , debes usarla así:

    ContextCompat.getColor(context, R.color.your_color);
    
  • También puedes insertar HEX simple, así:

    myTextView.setTextColor(0xAARRGGBB);
    

    Donde primero tienes un canal alfa, luego el valor del color.

Consulte el manual completo, por supuesto, clase pública Color extiende Objeto .


1 Este código solía estar aquí también:

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

Este método ahora está obsoleto en Android M. Sin embargo, puede usarlo desde contextCompat en la biblioteca de soporte , como ahora muestra el ejemplo.

Nanne avatar Jan 05 '2011 10:01 Nanne

Si aún desea especificar sus colores en su archivo XML:

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

Luego haga referencia a él en su código con uno de estos dos métodos:

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

o

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

El primero probablemente sea preferible si estás compilando con Android M, sin embargo, el tema que pasas puede ser nulo, entonces, ¿tal vez sea más fácil para ti?

Y si estás usando la biblioteca Compat puedes hacer algo como esto

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
xbakesx avatar Apr 01 '2011 19:04 xbakesx

Y otro:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
LEX avatar Sep 16 '2011 10:09 LEX

También puedes hacer esto sólo desde un archivo XML.

Cree un color.xmlarchivo en la carpeta de valores:

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

</resources>

Luego, en cualquier archivo XML, puede establecer el color del texto usando,

android:textColor="@color/textbody"

O puedes usar este color en un archivo Java:

final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));
newday avatar Oct 19 '2012 04:10 newday

Puedes usar

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

También puedes especificar qué color quieres con Transparencia.

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

a para valor Alfa (Transparente) r-rojo g-verde b-azul

Ganapathy C avatar Jan 05 '2011 10:01 Ganapathy C