安卓中矩形圆角的最大值是多少?

4
我尝试着制作一个如下图所示的形状:一个四个角都是完全圆润的矩形。但是似乎我无法得到比这个图中更“圆”的拐角了: enter image description here 为什么会这样? 有最大值吗?当然,我可以用一个png文件来实现,但是我想使用一个shape更加高效,所以我更愿意选择这种方式。
我的代码:
<Button
    android:id="@+id/button_guest"
    android:layout_width="315dp"
    android:layout_height="80dp"
    android:background="@drawable/rounded_rectangle"
    android:contentDescription="@string/text_button_guest"
    android:onClick="startGuestMode"
    android:text="@string/text_button_normal"
    android:textAllCaps="false"
    android:textColor="#ff000000"
    android:textSize="50sp"
    android:layout_marginLeft="125dp"
    android:layout_marginStart="125dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

rounded_rectangle.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff" />
    <corners
        android:radius="40dp" />
</shape>

不,没有限制。 - pskink
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Phantômaxx
@pskink 我知道,但是上面的代码不起作用;请看下面我的解决方案。 - ocramot
@Der Golem 抱歉,是我的打字错误,应该是40dp,我现在会更正。无论如何,对于每个值,比如超过25dp,它都有相同的行为。 - ocramot
处理边距和填充... 对我来说,这个 android:layout_marginLeft="125dp" 似乎有点夸张。 - Phantômaxx
2个回答

10

好的,我喜欢花几个小时来琢磨问题,然后在这里提问,最后不到10分钟就自己找到了答案:D

解决方案在我的代码下面。你可能认为它应该有相同的行为,但显然并没有。可能是关于圆角的另一个bug。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff" />
    <corners
        android:bottomLeftRadius="40dp"
        android:bottomRightRadius="40dp"
        android:topRightRadius="40dp"
        android:topLeftRadius="40dp"
        />
</shape>

1
哦...这很有帮助。谢谢! - shkschneider
这适用于所有布局密度吗?我记得有一个类似的可绘制对象在不同的密度(hdpi、xhdpi...)上呈现出不同的效果。 - Catalina
我正在开发一个特定API版本为15的设备;抱歉我没有在其他设备上进行测试。不过,我认为如果后续API版本没有修复这个bug,那么这应该适用于所有密度。 - ocramot

1
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff" />
    <corners android:radius="1500dp" />
</shape>

将半径设置为最大值,它将在所有可绘制对象中工作,这样您就不需要依赖于视图高度值。

这正是我在原始问题中发布的代码。它不能使用40dp,怎么能用1500dp? - ocramot
你知道为什么这个有效吗?文档中没有说明它的行为方式。 我担心这可能是未来版本的Android可能会删除的功能。 - Nivaldo Bondança

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接