2010-05-23 25 views
7

me he dado cuenta que al cambiar el color de fondo de un widget Android (ex botón o TextView.) Por programa:¿El color de fondo cambiante en Android destruye la apariencia del widget?

myButton.setBackgroundColor(Color.BLUE); 

hace perder su forma, la frontera, y los efectos de sombras 3D, y luego aparece como un cuadrado plano feo. ¿Qué me estoy perdiendo?

Perdón por la pregunta muy ingenua pero no pude hacerlo bien aunque intenté por un tiempo.

Respuesta

2

Las esquinas redondeadas, los efectos de sombras, etc. a menudo se logran en Android mediante el uso de imágenes. Vea esto developer documentation para una explicación de cómo funciona eso.

Un widget puede tener un fondo de imagen o un fondo de color sólido. Por lo tanto, al establecer el color de fondo, se anula la imagen de fondo. Si desea cambiar el color sin perder todo lo demás, debe editar los archivos de imagen.

0

Desde el fondo es un estirable, puede modificar el dibujable para cambiar el color:

myButton.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP); 
+0

Es posible que también necesite invalidar() para forzarlo a volver a dibujar. – Alvin

Cuestiones relacionadas