我一直在我的应用程序中覆盖默认按钮样式,如下所示:
<style name="ButtonStyle" parent="Base.Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
<item name="android:textSize">18sp</item>
<item name="android:textColor">@color/primaryTextContrast</item>
<item name="android:background">@drawable/button</item>
</style>
在 Nougat 之前,这种方式工作得很好,但在 Nougat 中出现了变化(我认为是错误修复),这种样式也适用于对话框中的按钮,而在以前的版本中则不然。这具有在白色背景上为对话框按钮提供白色文本的效果。
如果相关的话,button
是 drawable
中的 9 补丁,并在 drawable-v21
中被覆盖:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="?attr/colorPrimary"/>
</ripple>
主色为深色,primaryTextContrast
为白色。由于某种原因,对话框在牛轧糖中没有黑色按钮 - 它们似乎选择了文本颜色,但没有选择背景。因此,我需要要么让对话框按钮执行默认操作,要么让按钮完全继承深色背景和白色文本的样式。
最佳答案
@nasch,对话框按钮使用按钮栏样式。在这种情况下,您可以执行类似的操作
<style name="buttonBarButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
<item name="android:textColor">@color/colorPrimary</item>
</style>
在您的主要样式定义中,您可以定义
<style name="MyCustomTheme" parent="Theme.AppCompat">
<item name="buttonBarButtonStyle">@style/buttonBarButtonStyle</item>
...
希望这有帮助。
关于Android 覆盖除对话框之外的所有按钮样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193818/