То, что там происходит, это то, что атрибут background переопределяется стилем по умолчанию Button
. Стиль по умолчанию установлен в вашей теме, если вы посмотрите на Theme.AppCompat.Light.DarkActionBar
(тема, от которой вы наследуете), вы увидите следующую структуру наследования:
Theme.AppCompat.Light.DarkActionBar
Base.Theme.AppCompat.Light.DarkActionBar
Base.Theme.AppCompat.Light
Base.V7.Theme.AppCompat.Light
В Base.V7.Theme.AppCompat.Light
вы Вы найдете определение атрибута buttonStyle
, которое является стилем по умолчанию для элемента Button
:
<item name="buttonStyle">@style/Widget.AppCompat.Button</item>
Опять же, если вы посмотрите на Widget.AppCompat.Button
, вы обнаружите, что он наследует от Base.Widget.AppCompat.Button
и что он устанавливает атрибут android:background
(между другими).
Итак, чтобы изменить стиль Button
в теме, вы должны использовать свойство buttonStyle
. Ваша самая безопасная ставка - создать новый стиль, наследуемый от Widget.AppCompat.Button
(таким образом, вы не потеряете все остальные атрибуты, которые там установлены) и установите там атрибут android: background:
<style name="CustomStyle" parent="Widget.AppCompat.Button">
<item name="android:background">@color/colorPrimary</item>
</style>
<style name="CustomTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="buttonStyle">@style/CustomStyle</item>
</style>