Theme.Material.Light 覆盖背景按钮颜色

Theme.Material.Light override background button color

如何覆盖 v21/v22 style.xml 中按钮背景颜色的默认值?

我制作了一个从 Honeycomb 到 Lollipop 兼容的应用程序,我想为 Lollipop 制作更好的样式,但我找不到如何覆盖按钮的默认背景颜色(对于 API在 21 之前)到透明(在 API>21 我使用 <item name="android:colorButtonNormal">color</item><item name="android:colorControlHighlight">color</item>

您可以在 v21 中像这样创建可绘制对象

    ?xml version="1.0" encoding="utf-8"?>
<!--drawable-v21/btn_fab_default.xml-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/fab_color_shadow">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/style_color_accent" />
        </shape>
    </item>
</ripple>

有关详细信息,请访问此 link

好的,它部分起作用了,我试着解释一下: 现在我在主 drawable 文件夹中有一个 buttons.xml 文件,在 drawable-v21 文件夹中有一个 buttons.xml 文件,一切正常。

主要layout.xml包含:

<Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     ...
     android:background="@drawable/buttons" />

现在我的目标是 "background: none" 仅针对 v21 及更高版本。 为什么? 因为如果我为 v21 按钮设置背景,我将无法使用样式效果 <item name="android:colorButtonNormal">color</item><item name="android:colorControlHighlight">color</item>我设置在values-v21\style.xml

如果我为我的 v21 按钮设置透明颜色,BackgroundTint 属性 对 Lollipop 没有影响 phone。

我不想只为棒棒糖设备做布局,我想找到更好的方法来解决这个问题。