android:设置单个角时,形状角不起作用

hzx*_*zxu 11 android

我需要有一个左下角/左下角的背景(但不是左上/右上),下面是我的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle" android:padding="1dp">
        <solid android:color="#FFbdbebd"/>
        <corners
            android:bottomLeftRadius="12dip"
            android:bottomRightRadius="12dip"
            android:topLeftRadius="0dip"
            android:topRightRadius="0dip"/>
    </shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

但结果是一个没有任何圆角的普通矩形,如果我只使用:

android:radius="12dip"
Run Code Online (Sandbox Code Playgroud)

然后所有角落都是圆形的,我搜索并找到了与此相关的错误:

http://code.google.com/p/android/issues/detail?id=9161

但是臭虫说:

左/右切换,因为android:bottomRightRadius ="2dp"结果指定左下角圆角.

这可能与我的问题无关,我也尝试使用:

android:radius="12dip"
Run Code Online (Sandbox Code Playgroud)

其次是

android:topLeftRadius="0dip"
android:topRightRadius="0dip"
Run Code Online (Sandbox Code Playgroud)

没有成功.

有人可以帮忙吗?谢谢!

jte*_*erm 6

这似乎是一个众所周知的问题.每个角落必须> 1,否则没有角落会变圆.根据Android文档,它可以完成,但它有点hacky:

注意:每个角必须(最初)提供大于1的角半径,否则没有角是圆角.如果你想要特定的角不被舍入,一个解决方法是使用android:radius来设置一个大于1的默认角半径,但是然后使用你真正想要的值覆盖每个角,提供零("0dp") )你不想要的地方>圆角.

请看这里:http: //developer.android.com/guide/topics/resources/drawable-resource.html#corners-element


Fra*_*lin 6

改变这个:

 <corners 
        android:bottomRightRadius="12dp" 
        android:bottomLeftRadius="12dp"
        android:topLeftRadius="0dp" 
        android:topRightRadius="0dp"/>
Run Code Online (Sandbox Code Playgroud)

对此:

 <corners 
        android:radius="1dp"
        android:bottomRightRadius="12dp" 
        android:bottomLeftRadius="12dp"
        android:topLeftRadius="0dp" 
        android:topRightRadius="0dp"/>
Run Code Online (Sandbox Code Playgroud)

它应该按预期工作.


hzx*_*zxu 2

我发现可能有一个错误,如果你设置单独的角,如果其中任何一个是0,那么所有的角都会变成0,所以最后我将其中两个设置为1dip,另外两个设置为我需要的任何值,因为没有一个它们是 0,所以 bug 不会影响它,结果看起来不错。