125

在 android 网站上,有一个关于 color drawables 的部分。在 xml 中定义这些可绘制对象如下所示:

<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 中设置圆角?

4

3 回答 3

349

使用该<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>
于 2010-01-23T15:55:11.113 回答
19

mbaird 的回答很好。请注意,Android 中似乎存在一个错误(至少 2.1),如果您将任何单个角的半径设置为 0,它会强制所有角为 0(至少对于“dp”单位是这种情况;我没有不要尝试与任何其他单位一起使用)。

我需要一个顶角为圆形,底角为方形的形状。我通过将我想要的角设置为略大于 0: 0.1dp 的值来实现这一点。这仍然呈现为方角,但它不会强制其他角为 0 半径。

于 2010-05-07T00:28:32.347 回答
13

试试下面的代码

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

输出

于 2019-02-22T11:25:40.907 回答