0

我想实现这个

我想实现这个按钮。

我尝试添加图层列表可绘制背景。

  • 在 MaterialButton 的情况下不起作用。
  • 如果是普通按钮,它也不起作用,因为我的 AppTheme 是 Material Theme。所以普通 Button 的行为也像 Material Button。
4

1 回答 1

1

你不能使用这样MaterialButton的自定义drawable Background,在它的文档中说:

不要使用该android:background属性。MaterialButton自己管理background drawable,设置新的background手段 MaterialButton已经不能保证它引入的新属性能正常发挥作用。background如果更改默认值,MaterialButton则无法保证定义明确的行为。


无论如何,我为你设计了Background drawable一个正常的定制Androidx Button

在您activity_main.xml定义的Button属性中android:background="@drawable/custom_shape",您将插入drawable我们稍后定义的属性:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:layout_margin="10dp">

    <androidx.appcompat.widget.AppCompatButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Collect"
        android:background="@drawable/custom_shape"
        android:textColor="#ffffff"/>

</RelativeLayout>

这是提到drawablecustom_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="#ffc9a1"/>
            <corners android:radius="10dp"/>
        </shape>
    </item>

    <item android:bottom="5dp">
        <shape>
            <solid android:color="#f7791e" />
            <corners android:radius="10dp"/>
        </shape>
    </item>
</layer-list>

最终结果看起来非常接近您想要的 Button:

带有自定义背景的按钮

于 2021-07-28T17:24:13.777 回答