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.Colored
style qui utilise votre thème colorButtonNormal
pour la couleur désactivée et colorAccent
pour 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 colorButtonNormal
ou personnalisé colorAccent
, vous pouvez utiliser un ThemeOverlay
comme expliqué dans ce pro-tip et android:theme
sur 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/colorPrimary
et 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.