【问题标题】:How do I set the rounded corner radius of a color drawable using xml?如何使用 xml 设置可绘制颜色的圆角半径?
【发布时间】:2011-01-08 11:53:43
【问题描述】:

在android网站上,有一个section about 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中设置圆角?

【问题讨论】:

标签: android drawable


【解决方案1】:

使用&lt;shape&gt; 标签在 XML 中创建一个圆角的可绘制对象。 (你也可以用 shape 标签做其他事情,比如定义颜色渐变)。

这是我在我的一个应用中使用的 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>

【讨论】:

  • 在哪里保存这个文件以及如何在我的 java 代码中获取它?谢谢
  • 将其保存为可绘制目录中的 xml 文件,然后像使用任何可绘制对象(图标或资源文件)一样使用其资源名称 (R.drawable.your_xml_name)
  • 在这种特殊情况下,所有半径都相同,因此您可以使用 android:radius="7dp"
  • 此外,如果您单独定义半径(即使具有相同的值),Android Studio 中的布局渲染器将无法渲染它,并且会给出警告“Pat.isConvex is not supported ”。只需使用
  • @shyam 您可以将其设置为“背景”。如果你在 TextView 上使用它,你需要记住为开始和结束添加填充,这样文本就不会被圆角边缘挤满
【解决方案2】:

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

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

【讨论】:

  • 你写的是 0.1 dp 吗?行得通吗,我还需要上圆角和下方圆角,和你一样的问题,我在方角上使用 1 dp,在圆角上使用 10dp,你是对的,它仍然很明显,但给了我 90% 的东西想要,根据文档设置 0 在非圆角上应该可以工作。
  • 其实不是bug,文档里有:developer.android.com/guide/topics/resources/…
【解决方案3】:

试试下面的代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2017-10-01
    相关资源
    最近更新 更多