为什么我不能创build具体angular落的圆形边界?

在我的android xml布局中,我使用borderframe.xml作为背景来应用边框。

borderframe.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="1dip" android:color="#ffffff"/> <solid android:color="#95865F"/> <corners android:radius="10px"/> <padding android:left="1dp" android:right="1dp" android:top="1dp" android:bottom="1dp"/> </shape> 

现在,虽然有一个android:radius =“10px”,那么它是有效的,但是当我要给圆angular形状只有特定的angular落,那么它不起作用。 在日志猫没有任何错误消息,但我发现在月食错误,如:

  The graphics preview in the layout editor may not be accurate: * Different corner sizes are not supported in Path.addRoundRect. 

即使在该XML文件中没有填充,那么我也无法看到任何边框。

现在,我该怎么办呢? 以及如果我想创build只有topLeftcorner和bottomLeftCorner的圆形边界它的溶解。 ? 谢谢。

Solutions Collecting From Web of "为什么我不能创build具体angular落的圆形边界?"

你必须这样做,假设你只想要一个圆angular的左上angular:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="20sp" android:topRightRadius="0dp" android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp" /> <gradient android:startColor="@color/logo_blue" android:endColor="@color/blue" android:angle="0"/> </shape> 

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

因此,您需要将您的drawable定义为:

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="1dip" android:color="#ffffff"/> <solid android:color="#95865F"/> <corners android:radius="10px" android:topRightRadius="0dp" android:bottomRightRadius="0dp" /> <padding android:left="1dp" android:right="1dp" android:top="1dp" android:bottom="1dp"/> </shape> 

更新

从形状可绘制的资源Android文档 :

android:radius尺寸。 所有angular落的半径,作为维度值或维度资源。 通过以下属性覆盖每个angular落。

重写是您的问题的关键字…

我也面临同样的问题。 但为此我使用层列表。 我在这里发布我的答案,这可能会帮助你。
请检查输出屏幕 图片1

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="#c1c1c1" /> <solid android:color="#c1c1c1" /> <corners android:radius="20dp"/> </shape> </item> <item android:right="20dp" > <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="#c1c1c1" /> <solid android:color="#c1c1c1" /> </shape> </item> </layer-list> 

我正在使用SDK工具19,平台工具11并在Android 4.0.3中运行应用程序。 使用下面的XML为我工作:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#dd000000"/> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:bottomLeftRadius="25dp" android:bottomRightRadius="25dp" android:topLeftRadius="0dp" android:topRightRadius="0dp" /> </shape> 

Eclipse的警告是关于不能够显示预览。 在het应用程序中显示正确。

我在其中一个论坛上得到了解决scheme。 我通过评论每个angular落和添加到可绘制的XML来解决它。 我只保留下面的评论代码以便理解。

XML代码 –

  <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#fd2149" /> <stroke android:width="1dip" android:color="#ffd102"/> <!-- <corners android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" android:topLeftRadius="8dp" android:topRightRadius="8dp" /> --> <corners android:radius="8dp" /> </shape> 

—编辑 – 上面的代码是我的back.xml在可绘制的文件夹,如果需要,你可以添加填充到相同的back.xml。 对于那些新开发人员来说,back.xml是从布局文件中引用的,如下所示

  <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tableLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="20sp" android:scrollbars="vertical" android:background="@drawable/back"> 

希望这可以帮助。