如何使左上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>