Когда вы используете android:background
, вы заменяете большую часть стиля и внешнего вида кнопки пустым цветом.
Обновление: По состоянию на выпуске версии 23.0.0 от AppCompat , есть новый Widget.AppCompat.Button.Colored
стиль , который использует вашу тему colorButtonNormal
для инвалидов цвета и colorAccent
для задействованного цвета.
Это позволяет применить его к вашей кнопке напрямую через
<Button
...
style="@style/Widget.AppCompat.Button.Colored" />
Если вам нужен обычай colorButtonNormal
или colorAccent
, вы можете использовать , ThemeOverlay
как описано в этом про-наконечнике и android:theme
на кнопку.
Предыдущий ответ
Вы можете использовать drawable в вашем каталоге v21 для вашего фона, таких как:
<?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>
Это гарантирует, что цвет вашего фона будет ?attr/colorPrimary
и будет иметь анимацию пульсации по умолчанию с использованием ?attr/colorControlHighlight
настроек по умолчанию (которые вы также можете установить в своей теме, если хотите).
Примечание: вам придется создать пользовательский селектор для менее чем 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>
Предполагая, что у вас есть несколько цветов, которые вы хотели бы использовать для состояния по умолчанию, нажатия и фокусировки. Лично я снял скриншот пульсации на полпути, будучи выбранным, и вытащил из этого основное / сфокусированное состояние.