如何使用 xml 设置颜色绘制的圆角半径?

在 android 网站上,有一个 关于颜色绘制的部分:

<resources>
<drawable name="solid_red">#f00</drawable>
<drawable name="solid_blue">#0000ff</drawable>
<drawable name="solid_green">#f0f0</drawable>
</resources>

在 java api 中,他们有以下定义圆角的方法:

setCornerRadius(float radius)

有没有办法在 xml 中设置圆角?

201043 次浏览

使用 <shape>标记创建一个带圆角的 XML 可绘制图形。(你也可以用形状标签做其他事情,比如定义颜色渐变)。

下面是我在一个应用程序中使用的一个 XML 文件的副本,用于创建一个白色背景、黑色边框和圆角的可绘制图形:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffffff"/>
             

<stroke android:width="3dp"
android:color="#ff000000" />


<padding android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
             

<corners android:radius="7dp" />
</shape>

Baird 的答案很好。请注意,Android 似乎有一个 bug (至少2.1) ,如果你将任何一个角的半径设置为0,它会迫使所有的角都设置为0(至少在“ dp”单位的情况下是这样; 我没有尝试其他任何单位)。

我需要一个形状,上面的角是圆的,下面的角是方形的。我得到了通过设置角落,我想是正方形的值略大于0:0.1 dp。这仍然呈现为方角,但它不强制其他角为0半径。

试试以下代码

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:bottomLeftRadius="30dp"
android:bottomRightRadius="30dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp" />
<solid android:color="#1271BB" />


<stroke
android:width="5dp"
android:color="#1271BB" />


<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" /></shape>

Out put