Quando si utilizza android:background, si sostituisce gran parte dello stile e l'aspetto di un pulsante con un colore bianco.
Aggiornamento: a partire dalla versione 23.0.0 di AppCompat , esiste un nuovo Widget.AppCompat.Button.Coloredstile che utilizza i temi colorButtonNormalper il colore disabilitato e colorAccentper il colore abilitato.
Ciò ti consente di applicarlo direttamente al tuo pulsante tramite
<Button
...
style="@style/Widget.AppCompat.Button.Colored" />
Se hai bisogno di una personalizzazione colorButtonNormalo colorAccent, puoi usare una ThemeOverlaycome spiegato in questo suggerimento e android:themesul pulsante.
Risposta precedente
È possibile utilizzare un disegno nella directory v21 per lo sfondo come:
<?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>
Ciò assicurerà che il colore di sfondo sia ?attr/colorPrimarye abbia l'animazione di ondulazione predefinita usando quella predefinita ?attr/colorControlHighlight(che puoi anche impostare nel tuo tema se lo desideri).
Nota: dovrai creare un selettore personalizzato per meno di 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>
Supponendo che tu abbia alcuni colori che desideri per lo stato predefinito, premuto e focalizzato. Personalmente, ho fatto uno screenshot di un'increspatura a metà della selezione e ne ho tirato fuori lo stato primario / focalizzato.