绘制自定义椭圆和矩形 XML 形状作为按钮背景

Drawing custom oval and rectangle XML shape as buttom background

我想创建如下所示的自定义按钮背景:

我不能在矩形 shape 中使用 corners 属性,因为它只有角和左边的中间是直的,或者当我为该属性设置太多值时它看起来就这样。

我希望我可以像 那样组合 2 种形状(椭圆形和矩形),但是每当我尝试旋转该图层列表时,它看起来都不像想要的形状。

使用下面的代码作为可绘制文件并将背景设置为按钮。对于曲线边缘,您可以从下方增加减小半径。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:width="3dp"
        android:color="#ffffff" />
    <corners android:radius="10dp" />
    <gradient
        android:angle="270"
        android:endColor="#2b74d2"
        android:startColor="#2b74d2"
        android:type="linear" />
</shape>

这样试试:

             <Button
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:background="@drawable/test"
                android:text="Button"
                android:textColor="@color/black"
              />

@drawable/test会是这样的:

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

    <item
        android:left="0dp"
        android:right="-100dp"
        android:top="-30dp"
        android:bottom="-30dp">

        <shape android:shape="oval">
            <solid
                android:color="@android:color/white" />
        </shape>
    </item>


</layer-list>

注: 我知道这不是最好的解决方案。但就目前而言,这可以提供帮助。 如果您想增加 Button 的宽度,请相应地更改以下属性以满足您的需要。

android:top="-30dp"
android:bottom="-30dp"

并且 result 将如下所示: