将自定义的椭圆形和矩形XML形状绘制为臀部背景

时间:2018-11-15 12:49:27

标签: android xml shapes layer-list

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

enter image description here

我不能在矩形corners中使用shape属性,因为它仅使角部变圆并且左侧的中部是直的,或者每当我对该属性设置过多的值时,它看起来就像。
enter image description here

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

2 个答案:

答案 0 :(得分:2)

尝试这样:

             <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如下所示:

enter image description here

答案 1 :(得分:0)

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

<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>