Lorsque vous utilisez android:background, vous remplacez une grande partie du style et de l'apparence d'un bouton par une couleur vierge.
Mise à jour: Depuis la version 23.0.0 d' AppCompat , il existe un nouveau Widget.AppCompat.Button.Coloredstyle qui utilise votre thème colorButtonNormalpour la couleur désactivée et colorAccentpour la couleur activée.
Cela vous permet de l'appliquer directement sur votre bouton via
<Button
...
style="@style/Widget.AppCompat.Button.Colored" />
Si vous avez besoin d'un colorButtonNormalou personnalisé colorAccent, vous pouvez utiliser un ThemeOverlaycomme expliqué dans ce pro-tip et android:themesur le bouton.
Réponse précédente
Vous pouvez utiliser un dessin dans votre répertoire v21 pour votre arrière-plan, comme:
<?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>
Cela garantira que votre couleur d'arrière-plan est ?attr/colorPrimaryet a l'animation d'ondulation par défaut en utilisant la valeur par défaut ?attr/colorControlHighlight(que vous pouvez également définir dans votre thème si vous le souhaitez).
Remarque: vous devrez créer un sélecteur personnalisé pour moins 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>
En supposant que vous ayez certaines couleurs que vous souhaitez pour l'état par défaut, pressé et concentré. Personnellement, j'ai pris une capture d'écran d'une ondulation au milieu de la sélection et j'ai retiré l'état principal / concentré de cela.