How to Customize AppCompat Material Button Style?
You can have Base.MyButtonStyle
extend android:Widget.Holo.Button
on API 14+ (in res/values-v14/styles.xml
) and android:Widget.Material.Button
on API 21+ (in res/values-v21/styles.xml
. This style will change according to the device system version. Put your platform specific modifications here.
Then have MyButtonStyle
extend Base.MyButtonStyle
and define the android:minHeight
here (in res/values/styles.xml
). This will apply to all platforms.
You buttons then can use style MyButtonStyle
.
This example assumes your minimum SDK is 14.
And yes, there's no appcompat-v7 button style (well, at least not yet).
EDIT
This assumes you're OK with Holo button on platforms older than Lollipop. It feels unobtrusive and if you can do without ripples, it should be just fine. If you want ripples I suggest you google for a third party lollipop button library.
Custom Button Style With AppCompat +22 in your styles.xml
<style name="Button.Tinted" parent="Widget.AppCompat.Button">
<item name="colorButtonNormal">YOUR_TINT_COLOR</item>
<item name="colorControlHighlight">@color/colorAccent</item>
<item name="android:textColor">@android:color/white</item> </style>
in your layout.xml
<Button
android:id="@+id/but_next"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/but_continue"
android:theme="@style/Button.Tinted" />
To answer my own question, it appears AppCompat does not in fact support the Button
widget presently:
AppCompat provides similar behaviour on earlier versions of Android for a subset of UI widgets:
- Everything provided by AppCompat’s toolbar (action modes, etc)
- EditText
- Spinner
- CheckBox
- RadioButton
- Switch (use the new android.support.v7.widget.SwitchCompat)
- CheckedTextView
The only workaround I see would be to recreate the Material button style from the Android source code, a task which extends outside the scope of my desire.