Cuando lo usa android:background
, está reemplazando gran parte del estilo y la apariencia de un botón con un color en blanco.
Actualización: a partir de la versión 23.0.0 de AppCompat , hay un nuevo Widget.AppCompat.Button.Colored
estilo que utiliza el tema colorButtonNormal
para el color deshabilitado y colorAccent
para el color habilitado.
Esto le permite aplicarlo a su botón directamente a través de
<Button
...
style="@style/Widget.AppCompat.Button.Colored" />
Si necesita una colorButtonNormal
o personalizada colorAccent
, puede usar una ThemeOverlay
como se explica en este consejo profesional y android:theme
en el botón.
Respuesta anterior
Puede usar un dibujable en su directorio v21 para su fondo como:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="?attr/colorPrimary"/>
</ripple>
Esto asegurará que su color de fondo sea ?attr/colorPrimary
y tenga la animación de ondulación predeterminada usando la predeterminada ?attr/colorControlHighlight
(que también puede establecer en su tema si lo desea).
Nota: deberá crear un selector personalizado por menos de v21:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/primaryPressed" android:state_pressed="true"/>
<item android:drawable="@color/primaryFocused" android:state_focused="true"/>
<item android:drawable="@color/primary"/>
</selector>
Suponiendo que tiene algunos colores que desea para el estado predeterminado, presionado y enfocado. Personalmente, tomé una captura de pantalla de una onda a mitad de camino de ser seleccionado y saqué el estado primario / enfocado de eso.