如何使左上angular圆angular和左下angular圆angular成形?

我想用左上angular的圆angular和左下angular的圆angular做一个形状:

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#555555"/> <stroke android:width="3dp" android:color="#555555" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:bottomRightRadius="0dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="0dp"/> </shape> 

但上面的形状并没有给我想要的东西。 它给了我一个没有任何圆angular的矩形。

谁能帮忙?

谢谢。

虽然这个问题已经得到了回答(这是一个导致bottomLeftRadius和bottomRightRadius被颠倒的bug),这个bug已经在android 3.1(api level 12 – 在模拟器上testing过)中修复了。

所以要确保你的drawable在所有平台上看起来都是正确的,你应该在应用的res / drawable-v12文件夹中放置“更正”的drawable(即xml中左下angular/右侧半径实际上是正确的)版本。 这样,使用Android版本> = 12的所有设备将使用正确的可绘制文件,而使用旧版本android的设备将使用位于res / drawables文件夹中的“解决方法”drawable。

它看起来像一个http://code.google.com/p/android/issues/detail?id=939错误。;

最后我得写这样的东西:

  <stroke android:width="3dp" android:color="#555555" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:radius="1dp" android:bottomRightRadius="2dp" android:bottomLeftRadius="0dp" android:topLeftRadius="2dp" android:topRightRadius="0dp"/> 

我必须指定android:bottomRightRadius =“2dp”作为左下angular的圆angular(这里是另一个bug)。

从文档 :

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

例如,你必须设置一个android:radius =“”来做你想做的事情:

 <corners android:radius="2dp" android:bottomRightRadius="0dp" android:topRightRadius="0dp"/> 

另外一个GOTCHA,就是如果你这样做的话, 在eclipse中的预览是不正确的 。 您实际上必须启动您的应用程序才能看到实际结果!

你也可以为你的半径使用极小的数字。

 <corners android:bottomRightRadius="0.1dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="0.1dp" /> 

对于其他人有任何API级别的解决scheme,你可以把一个项目放在另一个例子之上:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> 

用浅色结果给你看三个项目:

在这里输入图像说明

最终的结果是:

在这里输入图像说明

最好的祝福。

这个bug 在这里提交。 这是API级别低于12的Android设备的错误。您必须将正确版本的布局放在drawable-v12文件夹中,该文件夹将用于API级别12或更高级别。 并且相同布局的错误版本(angular切换/反转)将被放置在默认的可绘制文件夹中,API文件级别低于12的设备将使用该文件夹。

例如:我不得不在右下angulardevise一个圆angular的button。

在“drawable”文件夹中 – button.xml:我必须使左下angular变圆。

 <shape> <corners android:bottomLeftRadius="15dp"/> </shape> 

在'drawable-v12'文件夹中 – button.xml:布局的正确版本被放在这里用于API级别12或更高。

 <shape> <corners android:bottomLeftRadius="15dp"/> </shape>