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.Colored
stile che utilizza i temi colorButtonNormal
per il colore disabilitato e colorAccent
per 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 colorButtonNormal
o colorAccent
, puoi usare una ThemeOverlay
come spiegato in questo suggerimento e android:theme
sul 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/colorPrimary
e 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.