我想去掉按钮的阴影,使它看起来更平坦。

我现在有这个:

但我想要的是:


当前回答

@Alt-Cat的答案对我有用!

r.t r. borderlessbuttonstyle不包含阴影。

按钮的文档很棒。

同样,你也可以在你的自定义按钮中,在第二个构造函数中设置这个样式。

    public CustomButton(Context context, AttributeSet attrs) {
        this(context, attrs, R.attr.borderlessButtonStyle);
    }

其他回答

科特林

stateListAnimator = null

Java

setStateListAnimator(null);

XML

android:stateListAnimator="@null"

它要求API级别为21

        android:outlineProvider="none"

更新材料组件

如果你之前使用过这样的东西:

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:buttonStyle">@style/NoShadowButton</item>
</style>

<style name="NoShadowButton" parent="Widget.AppCompat.Button">
    <item name="android:stateListAnimator">@null</item>
</style>

和我一样,你也在挠头,想知道为什么你已经迁移到了Theme.MaterialComponents.Light。*,这是因为buttonStyle只引用AppCompat按钮样式-有一个新的样式materialButtonStyle。这解决了我的问题:

<style name="MyTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="materialButtonStyle">@style/Widget.MaterialComponents.Button.UnelevatedButton</item>
</style>

这里有一个很好的指南,告诉您还有哪些已经更改,以及如何正确迁移。

try: android:stateListAnimator="@null"

@Alt-Cat的答案对我有用!

r.t r. borderlessbuttonstyle不包含阴影。

按钮的文档很棒。

同样,你也可以在你的自定义按钮中,在第二个构造函数中设置这个样式。

    public CustomButton(Context context, AttributeSet attrs) {
        this(context, attrs, R.attr.borderlessButtonStyle);
    }