Ao usar android:background
, você substitui grande parte do estilo e aparência de um botão por uma cor em branco.
Atualização: a partir da versão 23.0.0 do AppCompat , existe um novo Widget.AppCompat.Button.Colored
estilo que usa os temas colorButtonNormal
para a cor desativada e colorAccent
para a cor ativada.
Isso permite que você o aplique diretamente no botão via
<Button
...
style="@style/Widget.AppCompat.Button.Colored" />
Se você precisar de um personalizado colorButtonNormal
ou colorAccent
, poderá usar um ThemeOverlay
como explicado nesta dica profissional e android:theme
no botão.
Resposta Anterior
Você pode usar um drawable em seu diretório v21 para o seu plano de fundo, 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>
Isso garantirá que a cor do plano de fundo seja ?attr/colorPrimary
e tenha a animação de ondulação padrão usando o padrão ?attr/colorControlHighlight
(que você também pode definir no seu tema, se desejar).
Nota: você precisará criar um seletor personalizado para 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>
Supondo que você tenha algumas cores desejadas para o estado padrão, pressionado e focado. Pessoalmente, tirei uma captura de tela de uma onda no meio da seleção e tirei o estado primário / focado disso.