2010-05-05 9 views
5

¿Por qué cambiar el color del botón predeterminado hace que se vea con forma de RECTÁNGULO? No quiero usar imágenes de fondo personalizadas para esto. Quiero hacer esto programáticamente por algunas condiciones en las que cambio los colores de muchos botones pequeños en la pantalla. ¿Alguien puede dar una solución?¿Por qué cambiar el botón Color of Default hace que se vea RECTANGLE en Android?

P.S. ==> Parece que no hay solución al leer esto http://groups.google.com/group/android-beginners/browse_thread/thread/e1313e2c98e9c52b

o ¿hay alguno?

+0

Ver http://stackoverflow.com/questions/1521640/standard- android-button-with-a-different-color – OneWorld

Respuesta

8

Para cambiar de color:

Drawable d = findViewById(R.id.button_name).getBackground(); 
       PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP); 
       d.setColorFilter(filter); 

Para la eliminación de los colores:

Drawable d = findViewById(R.id.button_name).getBackground(); 
       findViewById(R.id.button_name).invalidateDrawable(d); 
       d.clearColorFilter(); 
1

Puede usar la siguiente secuencia de comandos XML en lugar de Asignar colores como fondo de pantalla. Antes que nada, déjame decirte que la vista de botón por defecto es un rectángulo, por lo que cuando solo agregas una vista de botón en tu diseño, tiene un estilo de fondo predeterminado asignado y por eso puedes verlo con esquinas redondeadas. cuando se asigna el fondo, el estilo/stype por defecto se anulará y obtendrá el botón en el formulario original, por lo que aquí debe aplicar el tema/stype según su requisito. Si lo quiere para unos pocos botones, puede usar el siguiente scrupt XML. Usted acaba de crear un archivo .xml en su dibujo bajo recursos en el proyecto de Android. luego asigne ese archivo .XML como fondo de su vista de botón. Y ver qué pasa ...

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffff"/> 
    <corners android:radius="6dp"/> 
    <padding android:left="3dp" android:top="2dp" 
      android:right="3dp" android:bottom="2dp" /> 
</shape> 
+0

El uso del xml anterior para el fondo del botón da alguna forma, pero al cambiar su color a rojo programáticamente, nuevamente su forma se convirtió en un rectángulo. – Pritam

Cuestiones relacionadas