programacion - manual de android en pdf
Color de fondo del botón Android (9)
Estoy tratando de establecer el color de fondo de un botón en mi aplicación y no puedo lograr el resultado que quiero ...
El color que intento establecer es holo_green_light(#ff99cc00)
. Para hacerlo, estoy usando setColorFilter(0xff99cc00, PorterDuff.Mode.MULTIPLY);
El color que obtengo no es el holo_green_light
sino una mezcla de lightgrey y holo_green_light
.
He intentado usar LightingColorFilter
sin mucho éxito.
¿Hay alguna manera de hacerlo programáticamente, para que el botón aparezca como un botón y no como un rectángulo plano con el color que necesito?
¿Por qué no usar simplemente setBackgroundColor(getResources().getColor(R.color.holo_light_green))
?
Editar: si quieres tener algo que se parece más a un botón de Android, vas a querer crear un degradado y establecerlo como fondo. Para un ejemplo de esto, puedes ver esta pregunta .
Además de la respuesta de Mark Proctor:
Si desea mantener el estilo predeterminado, pero tiene una coloración condicional en el botón, simplemente configure la propiedad backgroundTint
manera:
android:backgroundTint="@drawable/styles_mybutton"
Cree el archivo asociado /res/drawable/styles_mybutton.xml, luego use la siguiente plantilla y cambie los colores según sus gustos:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Disabled state-->
<item android:state_enabled="false"
android:color="@android:color/white">
</item>
<!-- Default state-->
<item
android:color="#cfc">
</item>
</selector>
Crea /res/drawable/button.xml
con el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<!-- you can use any color you want I used here gray color-->
<solid android:color="#90EE90"/>
<corners
android:bottomRightRadius="3dp"
android:bottomLeftRadius="3dp"
android:topLeftRadius="3dp"
android:topRightRadius="3dp"/>
</shape>
Y luego puedes usar lo siguiente:
<Button
android:id="@+id/button_save_prefs"
android:text="@string/save"
android:background="@drawable/button"/>
Esta es mi manera de hacer un botón personalizado con un color diferente.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:width="3dp"
android:color="#80FFFFFF" />
<corners android:radius="25dp" />
<gradient android:angle="270"
android:centerColor="#90150517"
android:endColor="#90150517"
android:startColor="#90150517" />
</shape>
De esta forma lo configuras como fondo.
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_marginBottom="25dp"
android:layout_centerInParent="true"
android:background="@drawable/button"/>
Los botones son más complejos que simplemente cambiar un color ...
Los botones de Android se fabrican usando bastantes 9 parches y estados dibujables. Deberías echarle un vistazo a los Holo Colors de Android para generarlos, querrás seleccionar "Color Button" y generará las imágenes y xml necesarios para ti ...
Para mantener el estilo, use:
int color = Color.parseColor("#99cc00");
button.getBackground().mutate().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC));
Si desea mantener el estilo general (esquinas redondeadas, etc.) y simplemente cambiar el color de fondo, entonces uso la propiedad backgroundTint
android: backgroundTint = "@ android: color / holo_green_light"
Si no le molesta codificarlo, puede hacer esto ~> android: background = "# eeeeee" y soltar cualquier número de color hexadecimal que desee.
Se ve como esto....
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:text="@string/ClickMe"
android:background="#fff"/>
no es necesario ser tan duro intente esto:
YourButtonObject.setBackground(0xff99cc00) ;