绘制自定义椭圆和矩形 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
将如下所示:
我想创建如下所示的自定义按钮背景:
我不能在矩形 shape
中使用 corners
属性,因为它只有角和左边的中间是直的,或者当我为该属性设置太多值时它看起来就这样。
我希望我可以像
使用下面的代码作为可绘制文件并将背景设置为按钮。对于曲线边缘,您可以从下方增加减小半径。
<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
将如下所示: