首页 > 解决方案 > android:buttonStyle 停止使用材料设计 1.2.0

问题描述

当 Material Design 库更新到 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>

标签: androidmaterial-design

解决方案


首先,MaterialButtonsapp:backgroundTint用于背景颜色而不是android属性。此外,根据我在material.io上看到的文档,当在内部使用样式时,style.xml或者theme.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>

...
...

等等。检查链接以获取更多信息,它一直在页面上。


推荐阅读