android:buttonStyle 停止了 material 设计 1.2.0 的工作

android:buttonStyle stopped working on material design 1.2.0

当 material 设计库更新到 1.2.1(也可能在 1.2.0 中)时,在应用主题上默认应用按钮样式停止工作。

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="android:buttonStyle">@style/AppTheme.Button.GrayGreen</item>
</style>

<style name="AppTheme.Button" parent="Widget.MaterialComponents.Button">
...
</style>

<style name="AppTheme.Button.GrayGreen">
    <item name="android:backgroundTint">@color/green</item>
    <item name="android:textColor">@color/white</item>
</style>

也尝试过:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="buttonStyle">@style/AppTheme.Button.GrayGreen</item>
</style>

首先,MaterialButtons 使用 app:backgroundTint 作为背景颜色,而不是 android 属性。此外,根据我在 material.io 上看到的文档,当在 style.xmltheme.xml 中使用样式时,您需要为每种类型的 MaterialButton 组件设置样式。像这样:

<style name="Theme.App" parent="Theme.MaterialComponents.*">
    ...
    <item name="borderlessButtonStyle">@style/Widget.App.Button.TextButton</item>
    <item name="materialButtonOutlinedStyle">@style/Widget.App.Button.OutlinedButton</item>
    <item name="materialButtonStyle">@style/Widget.App.Button</item>
</style>

<style name="Widget.App.Button.TextButton" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="materialThemeOverlay">@style/ThemeOverlay.App.Button.TextButton</item>
    <item name="android:textAppearance">@style/TextAppearance.App.Button</item>
    <item name="shapeAppearance">@style/ShapeAppearance.App.SmallComponent</item>
</style>

...
...

等等。查看 link 了解更多信息,它一直在页面下方。