在Android网站上,有一个section about color drawables。在xml中定义这些drawable如下所示:
<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中设置圆角?
答案 0 :(得分:274)
使用<shape>
标记创建带有圆角的XML格式的drawable。 (您可以使用形状标签执行其他操作,例如定义颜色渐变)。
这是我在我的一个应用程序中使用的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:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp" />
</shape>
答案 1 :(得分:18)
mbaird的回答很好。请注意,Android中似乎存在一个错误(至少2.1),如果将任何单个角的半径设置为0,它会强制所有角落为0(至少是“dp”单位的情况;我没有不要与任何其他单位一起尝试。)
我需要一个顶角为圆角,底角为方形的形状。我通过将我想要的方角设置为略大于0:0.1dp的值来实现这一点。这仍然呈现为方角,但它不会强制其他角落为0半径。
答案 2 :(得分: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>