I ended up setting background color with colorButtonNormal
attribute and other style attributes with buttonStyle
.
values/style.xml
:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/my_color_primary</item>
<item name="colorPrimaryDark">@color/my_color_primary_dark</item>
<item name="colorAccent">@color/my_color_accent</item>
</style>
<style name="AppTheme.Base">
<item name="colorButtonNormal">@color/my_color_accent</item>
<item name="buttonStyle">@style/Button</item>
</style>
<style name="Button" parent="Base.Widget.AppCompat.Button">
<item name="android:textColor">@color/my_color_white</item>
</style>
values-v21/style.xml
<style name="AppTheme.Base">
<item name="android:colorButtonNormal">@color/my_color_accent</item>
<item name="android:buttonStyle">@style/Button</item>
</style>
And then all the buttons have the background/text color I wanted without setting style
on each one.