我正在使用AppCompat主题,我想在我的按钮上设置minHeight属性:
<style name="Theme.MyTheme" parent="Theme.AppCompat">
<item name="android:buttonStyle">@style/MyButtonStyle</item>
</style>
<style name="MyButtonStyle" parent="...?">
<item name="android:minHeight">60dp</item>
</style>
但是,没有Widget.AppCompat.Button
样式设置为MyButtonStyle
的父级。如果我使用android:Widget.Button
,那么我的所有按钮看起来都像旧的蹩脚风格。我尝试了各种其他AppCompat主题,如TextAppearance.AppCompat.Button
,但它们不起作用。
省略按钮样式的父主题也会导致按钮无法正确设置样式。
如何自定义默认的Theme.AppCompat
buttonStyle
?
您可以在API 14+(在Base.MyButtonStyle
上)和android:Widget.Holo.Button
上使用res/values-v14/styles.xml
扩展android:Widget.Material.Button
在API 21+(在res/values-v21/styles.xml
中。此样式将根据设备系统版本进行更改。请在此处进行特定于平台的修改。
然后让MyButtonStyle
扩展Base.MyButtonStyle
并在这里定义android:minHeight
(在res/values/styles.xml
)。这适用于所有平台。
你按钮然后可以使用风格MyButtonStyle
。
此示例假定您的最低SDK为14。
是的,没有appcompat-v7按钮样式(好吧,至少还没有)。
编辑
这假设您在比Lollipop更早的平台上使用Holo按钮。它感觉不引人注目,如果你能做到没有涟漪,它应该没问题。如果你想要涟漪,我建议你去谷歌第三方棒棒糖按钮库。
为了回答我自己的问题,AppCompat does not in fact support Button
小部件现在出现:
AppCompat在早期版本的Android上为UI小部件的子集提供了类似的行为:
- AppCompat工具栏提供的所有内容(动作模式等)
- 的EditText
- 微调
- 复选框
- 单选按钮
- 切换(使用新的android.support.v7.widget.SwitchCompat)
- CheckedTextView
我看到的唯一解决方法是从Android源代码重新创建Material按钮样式,这个任务超出了我的愿望范围。
自定义按钮样式在styles.xml中使用AppCompat +22
<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>
在你的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" />
删除android:
<style name="Theme.MyTheme" parent="Theme.AppCompat">
<item name="buttonStyle">@style/MyButtonStyle</item>
</style>