在我的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”然后它是有效的,但是我将圆形到特定的角落,但它不起作用。 log cat中没有任何错误消息,但我在eclipse中发现错误,如:
The graphics preview in the layout editor may not be accurate:
* Different corner sizes are not supported in Path.addRoundRect.
即使该xml文件中没有填充,我也无法看到任何边框。
现在,我应该为此做些什么? 如果我想为topLeftcorner和bottomLeftCorner创建圆形边框,那么它是什么的解决方案。 ? 感谢。
答案 0 :(得分:17)
我也面临同样的问题。但为此我使用了图层列表。我在这里发布我的答案可能对你有所帮助。
请检查输出屏幕
<?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>
答案 1 :(得分:10)
你必须这样做,假设你只想要一个圆角的左上角:
<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>
解释:每个角必须(最初)提供大于1的圆角半径,否则没有圆角。如果您希望特定的角不被舍入,则使用android:radius
来设置大于1的默认角半径,然后使用您真正想要的值覆盖每个角,提供零(“ 0dp“)你不想要圆角。 [source]
因此,您需要将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>
<强>更新强>
来自The Shape Drawable Resource Android Documentation:
机器人:半径 尺寸。所有角落的半径,作为尺寸 价值或维度资源。每个角落都被覆盖了 以下属性。
重写是您问题的关键字...
答案 2 :(得分:6)
我正在使用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 app中,它显示正确。
答案 3 :(得分:-1)
我在其中一个论坛上找到了解决方案。我通过评论每个角落来解决这个问题。在drawable中添加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>
--- Edited- 上面的代码是我在drawable文件夹中的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">
希望这有帮助。