2009-09-23 19 views
143

Establecer el color de fondo programáticamente de un TextView de Android no parece funcionar. ¡Me estoy perdiendo algo!android TextView: configurar dinámicamente el color de fondo no funciona

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

que también tienen este archivo (colors.xml) en mis res/valores carpeta

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

[EDIT]: Además, establecer el color del texto hace que el TextView a desaparecer.

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

Respuesta

278

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

+5

La API de Android es realmente algo, ¿por qué no podría arrojar un error? – Tawani

+49

Porque no es un error. setBackgroundColor() toma un color en forma numérica (por ejemplo, 0xFFFF0000 para rojo). R.color.white es también un número. – CommonsWare

+5

D'oh! Esto definitivamente podría haberse hecho mejor con enumeraciones en lugar de ubiciones ubicuas. Gracias por la respuesta. –

69

Prueba esto:

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

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

+1

No lo entiendo completamente en este momento (revisando el documento de la API) pero funciona, ¡así que gracias! –

+0

¡Gracias, me has ahorrado unas horas! Ahora que conozco la solución, tiene sentido para mí, pero estoy seguro de que me hubiera llevado unas horas resolver esto por mi cuenta. – FreewheelNat

+0

Gracias. Android API es realmente no intuitivo a veces. –

-9

puede utilizar android:textColor= " cualquiera que sea el color del texto u quieren dar" en el archivo xml, donde se declara que su vista de texto

+2

Color de fondo ... –

52

Para establecer el color rojo:.

textView.setBackgroundColor(0xfff00000); 

O

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

textView.setBackgroundResource(R.color.solid_red); 
+0

nice answer ... Voy a votar esto mañana .. – Aravindhan

+1

Para repetir la respuesta de badMonkey dado que esta es la respuesta más popular, DEBE establecer los bits de orden superior a cero para la transparencia. Me atrapan todo el tiempo al especificar el RGB sin el A.Para establecer el fondo en azul puro, use 0xff0000ff, no 0x0000ff o no funcionará. – JohnnyLambada

+0

En el .xml, el valor de un elemento funciona solo con los 6 dígitos clásicos: # FF0000 –

16

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 esto es ar El color ed es también 100% transparente como it = 0x00FF0000; El valor correcto 100% opaco es 0xFFFF0000 o mytext.setTextcolor(0xFFFF0000).

+0

¡Ah, es por eso que mis colores aparecieron mal! – marlar

1

Jut utilizar

ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, your array list); 
7

Bueno, yo tenía la situación cuando el servicio Web devuelve un color en formato hexadecimal como "# CC2233" y quería poner este color en Textview utilizando setBackgroundColor(), por lo que se utiliza Android Clase de color para obtener el valor int de la cadena hexadecimal y pasarlo a la función mencionada. Todo funcionó. Este es un ejemplo:

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

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

2

Color.parseHexColor("17ee27") no funcionó para mí, en cambio Color.parseColor("17ee27") funcionó a la perfección.

0

dos maneras de hacerlo: el color

1.Create en el archivo colors.xml como:

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

y utilizarlo int clase java actividad como:

et.setBackgroundResource(R.color.white); 

2.

et.setBackgroundColor(getResources().getColor(R.color.white)); 
       or 
et.setBackgroundColor(Color.parseColor("#ffffff")); 
3
tv.setTextColor(getResources().getColor(R.color.solid_red)); 
7

Sólo 1 línea de código cambia el fondo mediante programación

tv.setBackgroundColor(Color.parseColor("#808080")); 
+1

Gracias amigo. Realmente ayudó –

1

Éstos son los pasos para hacerlo correctamente:

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

    TextView mTextView; 
    
  2. Conjunto algún texto dinámicamente (si lo desea) de la siguiente manera:

    mTextView.setText("some_text"); 
    
  3. Ahora, para establecer el color de fondo, es necesario definir su propio color en las res->> colores valores- archivo .xml de la siguiente manera:

    <resources> 
        <color name="my_color">#000000</color> 
    </resources> 
    
  4. ahora puede utilizar el color "my_color" en el archivo de java para configurar el fondo de forma dinámica de la siguiente manera:

    mTextView.setBackgroundResource(R.color.my_color); 
    
1

Si desea apoyar todas las versiones, hacer esto:

myTextView.setBackgroundColor (ContextCompat.getColor (esto, R.color.mycolor));

2

aquí es en pequeño detalle,

si está en uso la actividad de este

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

si está en uso fragmento a continuación código

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

si se encuentra en recyclerview uso del adaptador código siguiente

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

// use holder.textview if you are in onBindviewholder 
//here context is passed from fragment 
Cuestiones relacionadas