¿Cómo configurar el color del texto de TextView en el código?
En XML, podemos establecer un color de texto mediante el textColor
atributo, como android:textColor="#FF0000"
. ¿Pero cómo lo cambio codificando?
Intenté algo como:
holder.text.setTextColor(R.color.Red);
Donde holder
es solo una clase y text
es 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?
Deberías usar:
holder.text.setTextColor(Color.RED);
Puedes usar varias funciones de la Color
clase para obtener el mismo efecto, por supuesto.
Color.parseColor
(Manual) (como los que usa LEX)text.setTextColor(Color.parseColor("#FFFFFF"));
Color.rgb
yColor.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
XML
archivo, 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.
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));
Y otro:
TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
También puedes hacer esto sólo desde un archivo XML.
Cree un color.xml
archivo 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));
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