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的地方。