Android TextView: configurar el color de fondo dinámicamente no funciona

169

Establecer el color de fondo programáticamente de un Android TextViewno parece funcionar. Me estoy perdiendo algo!

TextView et = new TextView(activity);
et.setText("350");
et.setBackgroundColor(R.color.white);

También tengo este archivo (colors.xml) en mi carpeta res / values

<resources>
        <color name="white">#ffffffff</color>
        <color name="black">#ff000000</color>
</resources>

[EDITAR]: Además, establecer el color del texto hace que TextView desaparezca.

TextView c1 = new TextView(activity);
c1.setTextColor(R.color.solid_red);
c1.setText("My Text");
Tawani
fuente

Respuestas:

333

Utilizar et.setBackgroundResource(R.color.white);

bhatt4982
fuente
55
La API de Android es realmente algo, ¿por qué no podría arrojar un error?
Tawani el
53
Porque no es un error. setBackgroundColor () toma un color en forma numérica (por ejemplo, 0xFFFF0000 para rojo). R.color.white también es un número.
CommonsWare
66
D'oh! Definitivamente, esto podría haberse hecho mejor con enumeraciones en lugar de entradas ubicuas. Gracias por la respuesta.
Wojciech Górski
2
¡ Podrían estar usando diferentes tipos de firmas! Uno llamado ColorId y otro llamado HexColor o algo así. Ambos son enteros, pero no son del mismo tipo
1
Muy extraño. De la documentación: el recurso debe hacer referencia a un objeto Drawable o 0 para eliminar el fondo.
Artem
73

Prueba esto:

TextView c1 = new TextView(activity);
c1.setTextColor(getResources().getColor(R.color.solid_red));
c1.setText("My Text");

Estoy de acuerdo en que un color y un recurso tienen el mismo tipo, pero también paso algunas horas para encontrar esta solución.

Seb DA ROCHA
fuente
2
No lo entiendo completamente en este momento (revisando los api doc) pero funciona, así que ¡gracias!
CodeJustin.com
Gracias, me has salvado unas horas! Ahora que conozco la solución, tiene sentido para mí, pero estoy seguro de que me habría llevado unas horas resolverlo por mi cuenta.
FreewheelNat
Gracias. La API de Android es realmente no intuitiva a veces.
suDocker
64

Para establecer el color rojo:

textView.setBackgroundColor(0xfff00000);

O

<color name="solid_red">#fff00000</color>

textView.setBackgroundResource(R.color.solid_red);
Dmitry
fuente
1
Para hacer eco de la respuesta de badMonkey, dado que esta es la respuesta más popular, DEBE establecer los bits de orden superior en no cero para la transparencia. Me atrapa todo el tiempo especificando el RGB sin la A. Para establecer el fondo en azul puro, use 0xff0000ff, no 0x0000ff o no funcionará.
JohnnyLambada
En el archivo .xml, el valor de un elemento <color> funciona solo con los 6 dígitos clásicos: # FF0000
Arma X
@WeaponX: funciona bien con colores transparentes (en 8 dígitos).
CoolMind
@Weapn X La función toma un número entero, 4 bytes. 6 dígitos hexadecimales son 3 bytes.
20

Tuve un problema similar cuando estaba creando un color numérico sin considerar el canal alfa principal. es decir. mytext.setTextColor(0xFF0000)(pensando que esto sería rojo). Si bien este es un color rojo, también es 100% transparente, ya que it = 0x00FF0000; el valor correcto de 100% opaco es 0xFFFF0000o mytext.setTextcolor(0xFFFF0000).

badMonkey
fuente
10

Solo esta 1 línea de código cambió el fondo programáticamente

tv.setBackgroundColor(Color.parseColor("#808080"));
Vivek Warde
fuente
8

Bueno, tuve una situación en la que el servicio web devolvió un color en formato hexadecimal como "# CC2233" y quería poner este color en textView usando setBackGroundColor (), por lo que utilicé la clase de color de Android para obtener el valor int de la cadena hexadecimal y lo pasé a Función mencionada. Todo funcionó. Este es un ejemplo:

String myHexColor = "#CC2233";
TextView myView = (TextView) findViewById(R.id.myTextView);
myView.setBackGroundColor(Color.pasrsehexString(myHexColor));

PS publicó esta respuesta porque otras soluciones no funcionaron para mí. Espero que esto ayude a alguien:)

usuario1252459
fuente
5

aquí hay poco detalle,

si estás en actividad usa esto

textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor));

si está fragmentado, use el siguiente código

textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor));

si está en el adaptador de la vista de reciclaje, use el siguiente código

textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor));

// use holder.textview if you are in onBindviewholder
//here context is passed from fragment
dharmx
fuente
4

Estos son los pasos para hacerlo correctamente:

  1. En primer lugar, declare una instancia de TextView en su MainActivity.java de la siguiente manera:

    TextView mTextView;
  2. Establezca un texto DINÁMICAMENTE (si lo desea) de la siguiente manera:

    mTextView.setText("some_text");
  3. Ahora, para establecer el color de fondo, debe definir su propio color en el archivo res-> values-> colors.xml de la siguiente manera:

    <resources>
        <color name="my_color">#000000</color>
    </resources>
  4. Ahora puede usar el color "my_color" en su archivo java para configurar el fondo dinámicamente de la siguiente manera:

    mTextView.setBackgroundResource(R.color.my_color);
Sahil Sharma
fuente
4
tv.setTextColor(getResources().getColor(R.color.solid_red));
Yash Patil
fuente
3

Color.parseHexColor("17ee27")no funcionó para mí, en cambio Color.parseColor("17ee27")funcionó perfectamente.

Siddharth
fuente
2

dos formas de hacer eso:

1.crear color en el archivo colors.xml como:

<resources>
        <color name="white">#ffffff</color>
</resources>

y úsalo int activity java class como:

et.setBackgroundResource(R.color.white);

2)

et.setBackgroundColor(getResources().getColor(R.color.white));
                or
et.setBackgroundColor(Color.parseColor("#ffffff"));
Hamad
fuente
2

Si desea admitir todas las versiones: intente esto:

myTextView.setBackgroundColor(ContextCompat.getColor(this,R.color.mycolor)); 
Mladen Rakonjac
fuente
1

Solo uso

ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, your array list);
Pavan Anadkat
fuente
-10

puede usar android:textColor= "cualquier color de texto que desee "en el archivo xml donde se declara su vista de texto.

Richa
fuente
Programaticamente ... no xml
aLL