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


544

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

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 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 algo más?


Una nota sobre cómo ajustar la IU en el código, considere las ventajas de ver la IU en tiempo de diseño, minimizando los cambios de tiempo de ejecución al mínimo.
AlikElzin-kilaka

Respuestas:


1245

Deberías usar:

holder.text.setTextColor(Color.RED);

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

  • Color.parseColor (Manual) (como los usos de LEX)

    text.setTextColor(Color.parseColor("#FFFFFF"));
  • Color.rgby Color.argb( Manual rgb ) ( 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 desea definir su color en un XMLarchivo, puede hacer esto:

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

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

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

    myTextView.setTextColor(0xAARRGGBB);

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

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


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

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

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


2
Además, si el texto es un enlace, debe usar text.setLinkTextColor (...); en código o android: textColorLink = "..." en XML
WOUNDEDStevenJones

1
@Nanne Sería bueno que tu respuesta también mencionara que R.color.XXX es una referencia al color. Lo que significa que debe ser desreferenciado (como en su ejemplo), para mayor claridad.
nyaray

¿No estoy seguro de lo que quieres decir? Al igual que en, desreferenciado, ¿utilizará más recursos o quiere decir algo más?
Nanne

¿Hay alguna forma de saber si un valor de color particular va a dejar que un texto desaparezca?
Christopher Masser

66
getColor(int)es obsoleto.
RestInPeace

137

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

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

Luego, haz referencia 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, ¿entonces tal vez sea más fácil para usted?

Y si está utilizando la biblioteca Compat, puede hacer algo como esto

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));

99
Para setTextColor, ¿por qué tiene que tomar getResources (). GetColor () en lugar de la referencia directa R.color.errorColor? R.color.x funciona para casi cualquier otro método. Increíblemente frustrante!
Civil

8
@Civilian: porque el parámetro int que requieren los métodos setXXXColor () se toma como el valor ARGB real para usar, NO como el valor para buscar en el archivo de recursos. Por extraño que parezca, la clase View tiene tanto setBackgroundColor () como setBackgroundResource (), mientras que a TextView le falta un método setTextResource ().
Ian Kemp

1
getColor(int)es obsoleto. ContextCompat.getColor(getContext(), R.color.yourColor);Parece ser el reemplazo.
RestInPeace

45

Y otro:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));

1
getResources()es una función miembro de contexto. Para adaptadores, use getContext().getResources(). Los valores de color deben ir a los recursos, como en la respuesta de @ xbakesx.
C0D3LIC1OU5

40

También puede hacer esto solo 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 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));

27

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 el valor Alfa (transparente) r-rojo g-verde b-azul


15

use 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" />

15

Hay muchas formas diferentes de configurar el color en la vista de texto.

  1. Agregue valor de color en studio res-> values-> colors.xml as

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

    Ahora configure el color en xml o clase de actividad como

    text.setTextColor(getResources().getColor(R.color.color_purple)
  2. Si desea dar un código de color directamente, use el código Color.parseColor a continuación

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

    text.setTextColor(Color.rgb(200,0,0));
  4. El uso también puede usar el código hexadecimal directo para textView. También puede insertar HEX plano, así:

    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á utilizando la biblioteca Compat, puede hacer algo como esto

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));

9

Normalmente hago esto para cualquier vista:

myTextView.setTextColor(0xAARRGGBB);

dónde

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

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


¿Y por qué el voto negativo? ¿Puedes agregar algunas ideas sobre esto por favor?
AW

7

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

Esto funciona:

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

Si bien esto hará que su color de texto 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
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

En el colors.xmlarchivo, escriba el código a continuación:

<color name="colorWhite">#FFFFFF</color>

6

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

Intente cambiar su valor de color a #FFFF0000. Debería darte ROJO.


Según mi experiencia, eso no es cierto y es posible usar un valor RGB en lugar de un valor
ARGB

6

text.setTextColor(getResource().getColor(R.color.black)) tiene crear color negro en color.xml.

O

text.setTextColor(Color.parseColor("#000000")) aquí escriba el código hexadecimal deseado

O

text.setTextColor(Color.BLACK) puedes usar campos de color estáticos


5

Utilizar:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));

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

o

myTextView.setTextColor(0xAARRGGBB);

4

Usando el Adaptador 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"));

4
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

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



2

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

Use esto en su lugar:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));

1
   textViewStatus.setTextColor(res.getColor(R.color.green));

1

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

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));

1

si desea dar un código de color directamente, use

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

o si desea dar un código de color de la carpeta de colores, use

textView.setTextColor(R.color.white);

este código textView.setTextColor (R.color.white); no funciona Puede usar text.setTextColor (getResources (). GetColor (R.color.color_purple) para obtener el color de su color.xml
Gian Gomen

1

Para configurar el color de un TextView, ¡ TextView.setTextColor(R.color.YOURCOLOR)no es suficiente!

Tiene que usarse así:

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

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

O

myText.setTextColor(Color.parseColor("#54D66A"));


0

Del mismo modo, estaba usando color.xml:

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

Para configurar el TextViewfondo como:

textView.setTextColor(R.color.white);

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

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

0

Lo hice de esta manera: crear 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 usado este código: valor es TextView y ctx es un objeto Context. No lo estoy usando desde una Actividad, sino un Adaptador de Base a un ListView. Es por eso que he usado este objeto de contexto.

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

Espero eso ayude.


0

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


0

Si está en un adaptador y todavía quiere usar un color definido en los recursos, puede probar el siguiente enfoque:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));

0
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);

0

getColor () está desactualizado

Así que intente de esta manera:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));

0

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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.