Android – 仅在顶部绘制圆angular
我有这个drawable有一个圆angular的矩形作为背景:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white" /> <stroke android:width="1dp" android:color="@color/light_gray" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:radius="6dp" /> </shape>
如预期的那样,这工作正常。
现在,我想改变这只是围绕顶部的angular落,所以我改变它:
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white" /> <stroke android:width="1dp" android:color="@color/light_gray" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> <corners android:topLeftRadius="6dp" android:topRightRadius="6dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/> </shape>
但是现在没有一个angular落是圆的,我得到一个普通的矩形。 我在这里错过了什么?
尝试给这些值:
<corners android:topLeftRadius="6dp" android:topRightRadius="6dp" android:bottomLeftRadius="0.1dp" android:bottomRightRadius="0.1dp"/>
请注意,我已经将0dp
更改为0.1dp
。
编辑:请参阅下面的亚历克斯的评论清洁版本
尝试做这样的事情:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="-20dp" android:left="-20dp"> <shape android:shape="rectangle"> <solid android:color="@color/white" /> <corners android:radius="20dp" /> </shape> </item> </layer-list>
似乎不适合设置矩形的不同angular落半径。 所以你可以使用这个黑客。
build立在busylee的答案上 ,这就是如何drawable
一个只有一个未圆angular的drawable
(在本例中为左上angular):
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/white" /> <!-- A numeric value is specified in "radius" for demonstrative purposes only, it should be @dimen/val_name --> <corners android:radius="10dp" /> </shape> </item> <!-- To keep the TOP-LEFT corner UNROUNDED set both OPPOSITE offsets (bottom+right): --> <item android:bottom="10dp" android:right="10dp"> <shape android:shape="rectangle"> <solid android:color="@color/white" /> </shape> </item> </layer-list>
请注意,在Android Studio预览(2.0.0p7)中,上面的drawable
没有正确显示。 要预览它,创build另一个视图,并使用它作为android:background="@drawable/..."
。
在我的情况下面的代码
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="10dp" android:bottom="-10dp" > <shape android:shape="rectangle"> <solid android:color="@color/maincolor" /> <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp" /> </shape> </item> </layer-list>
我试过你的代码。 我有一个顶部圆angularbutton。 我给了@ffffff的颜色和srtoke我给#C0C0C0。 尝试1)给android:bottomLeftRadius =“0.1dp”,而不是0.如果它不工作2)检查什么drawable和模拟器的决议。 我创build了一个可绘制的文件夹在res和使用它。 (hdpi,mdpi ldpi)文件夹,你有这个XML。 这是我的输出
你可能需要阅读这个https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
下面有一个注释。
注意每个angular必须(最初)的angular半径大于1,否则angular不会被倒圆angular。 如果你想要特定的angular落不被舍入,一个解决方法是使用android:radius来设置一个大于1的默认angular落半径,然后用你真正想要的值覆盖每个angular落,提供零(“0dp” )你不想要圆angular的地方。