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


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

Probé algo como:

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

Donde holder es solo una clase y text es de tipo TextView. Red es un valor RGB (#FF0000) establecido en cadenas.

Pero muestra un color diferente en lugar de 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 cualquier otra cosa?

Author: Peter Mortensen, 2011-01-05

30 answers

Debes usar:

holder.text.setTextColor(Color.RED);

Para una comprobación de cordura, acabo de probarlo, porque tenía un proyecto abierto de todos modos, y sí, es bonito y rojo ;D


Puede usar varias funciones de la clase Color para obtener el mismo efecto, por supuesto.

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

    text.setTextColor(Color.parseColor("#FFFFFF"));
    
  • Color.rgb y Color.argb (Rgb manual) (Manual argb ) (como los usos de Ganapathy)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
    
  • Y por supuesto, si si desea definir su color en un archivo XML, puede hacer esto:

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

    Porque la función getColor() está obsoleta1, necesitas usarlo así:

    ContextCompat.getColor(context, R.color.your_color);
    
  • También puede insertar hexágono plano, así:

    myTextView.setTextColor(0xAARRGGBB);
    

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

Echa un vistazo al manual completo del curso, objeto de extensión de color de clase pública.


1Este código utilizado para 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 muestra el ejemplo ahora.

 1086
Author: Nanne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:22

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

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

Luego referencialo en tu 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 es probablemente preferible si está compilando contra Android M, sin embargo, el tema que pasa puede ser nulo, así que tal vez eso es más fácil para usted?

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

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
 130
Author: xbakesx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-07 18:21:51

Y otro:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
 42
Author: LEX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:37:27

También puede hacer esto solo desde un archivo XML.

Cree un archivo color.xml en la carpeta valores:

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

</resources>

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

android:textColor="@color/textbody"

O puede 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));
 35
Author: newday,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:38:30

Puedes usar

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

También puede especificar qué color desea con Transparencia.

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

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

 25
Author: Ganapathy C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-24 18:31:42

Utilice el siguiente código en 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" />
 11
Author: Chinna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-09 14:09:48

Hay muchas maneras diferentes de establecer el color en la vista de texto.

  1. Agregue valor de color en studio res->valores->colores.xml como

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

    Ahora establezca el color en xml o clase actvity como

    text.setTextColor(getResources().getColor(R.color.color_purple)
    
  2. Si desea dar código de color directamente use debajo de Color.Código parseColor

    textView.setTextColor(Color.parseColor("#ffffff"));   
    
  3. También puede usar RGB

    text.setTextColor(Color.rgb(200,0,0));
    
  4. Use también puede usar hexcode directo para TextView. También puede insertar hexágono plano, como entonces:

    text.setTextColor(0xAARRGGBB);
    
  5. También puede usar argb con valores alfa.

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

    A para Alfa (Transparente) v.

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

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
    
 11
Author: Rank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 02:36:43

Normalmente hago esto para cualquier vista:

myTextView.setTextColor(0xAARRGGBB);

Donde

  • AA define alpha (00 para transparente, FF para opaco)

  • RRGGBB define el código de color HTML normal (como FF0000 para rojo).

 8
Author: A.W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:38:59

Si planea usar setTextAppearance debe saber que sobrescribirá el color del texto con el estilo heredado del tema. Así que si desea utilizar ambos, establezca el color después.

Esto funciona:

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

Mientras que esto hará que su textcolor sea, por ejemplo, blanco (para el tema oscuro) o negro(para el tema claro):

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

Contrariamente a esto en XML, el orden es arbitrario.

 7
Author: Robin Gawenda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-10 10:09:45

Creo que si desea especificar un color como recurso (en el archivo XML), tendrá que proporcionar su valor ARGB (no simplemente el valor RGB).

Intenta cambiar el valor del color a #FFFF0000. Debería darte ROJO.

 5
Author: Arnab Chakraborty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:46:03

Uso:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
 4
Author: Talha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:46:26
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

En el archivo colors.xml, escriba el siguiente código:

<color name="colorWhite">#FFFFFF</color>
 4
Author: Kaushik Chatterjee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-05 19:38:07
holder.text.setTextColor(Color.rgb(200,0,0));

O

myTextView.setTextColor(0xAARRGGBB);
 4
Author: Yash Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-31 01:17:14

Usando Adapter puede establecer el color del texto usando este código:

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
 3
Author: Hiren Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:39:55
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

El código anterior está trabajando de mi lado. Aquí textes un TextView en el que se necesita establecer el color.

 3
Author: Evon Technology,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-24 13:31:44
text1.setTextColor(Color.parseColor("#000000"));
 3
Author: Ravina Bhavsar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-31 01:16:55

text.setTextColor(getResource().getColor(R.color.black)) tienes que crear color negro en color.XML.

O

text.setTextColor(Color.parseColor("#000000")) aquí escriba hexcode deseado

O

text.setTextColor(Color.BLACK) puede utilizar campos de color estáticos

 2
Author: Nitish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-30 10:09:41
   textViewStatus.setTextColor(res.getColor(R.color.green));
 1
Author: zudo1337,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-29 10:45:39

En el Adaptador puede establecer el color del texto usando este código:

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
 1
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:39:21

Si desea dar código de color directamente, use

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

O si desea dar código de color desde la carpeta colores, use

textView.setTextColor(R.color.white);
 1
Author: reshma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-08 07:05:07

Para establecer el color de una vista de texto, TextView.setTextColor(R.color.YOURCOLOR) no es suficiente!

Tiene que ser usado así –

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

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

O

myText.setTextColor(Color.parseColor("#54D66A"));
 1
Author: IntelliJ Amiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-19 09:10:55
holder.userType.setTextColor(context.getResources().getColor(
                    R.color.green));
 1
Author: Harish Gyanani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-21 11:13:21

Desde API 23 en adelante, getResources().getColor() está en desuso.

Usa esto en su lugar:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
 1
Author: PJ2104,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-11 10:17:40

Del mismo modo, yo estaba usando color.xml:

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

Para establecer el fondo TextView como:

textView.setTextColor(R.color.white);

Estaba obteniendo un color diferente, pero cuando usé el siguiente código obtuve el color real.

textView.setTextColor(Color.parseColor("#ff6363"));
 0
Author: Raj Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 16:47:40

Lo hice de esta manera: Cree un archivo XML, llamado Colores en la carpeta res/values.

Mis Colores.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>

Para obtener estos colores del archivo xml, he utilizado este código: valor es un TextView, y ctx es un objeto de contexto. No lo estoy usando de una Actividad, sino de un BaseAdapter a una ListView. Es por eso que he utilizado este Objeto de Contexto.

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

Espero que ayude.

 0
Author: Cristiano Guerra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-17 12:19:53

Para proporcionar valores rgb: text.setTextColor(Color.rgb(200,0,0));
Para analizar el color a partir de un valor hexadecimal: text.setTextColor(Color.parseColor("#FFFFFF"));

 0
Author: Comrade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-26 21:39:01

Si está en un adaptador y aún desea usar un color definido en resources, puede probar el siguiente enfoque:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
 0
Author: Aleks Nine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-18 13:55:41
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
 0
Author: Pedro Lobito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-23 22:55:27

GetColor() está en desuso

Así que intenta de esta manera:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
 0
Author: kgandroid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-02 10:43:39

Estaba haciendo esto para un TextView en un ViewHolder para un RecyclerView. No estoy tan seguro de por qué, pero no funcionó para mí en la inicialización 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
}

Pero cuando lo moví al onBindViewHolder, funcionó bien.

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

Espero que esto ayude a alguien.

 0
Author: IsaiahJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-02 09:27:18