我可以创建一个所有边缘都是圆形的矩形形状。但是,我想要的是一个只有 2 个边缘是圆角的矩形。这可能吗?
我本质上是在拼凑一个看起来像带有圆边的气泡的 ListView。我希望添加一个顶部边缘为圆形的页眉和两个底部边缘为圆形的页脚。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
这段代码只是工作(因为?)Android 2.2 版。参考文档,代码应如下所示:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:radius="2dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
您可能会发现这很有帮助。
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
我将android:radius
属性更改为android:topRightRadius
andandroid:topLeftRadius
我认为最好的(根据我对您的问题的理解)是创建一个 9patch 图像并将其用作背景 - 可以根据需要定义为拉伸并在 XML 级别设置以节省一些代码工作
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
使用上面的代码
我会尝试绘制一个圆角矩形,然后再画两个与圆角矩形的角半径相同大小的矩形,然后将它们放在您不想被圆角的角上。
因此,例如,一个半径为 15px 的圆角矩形和两个 15x15px 的规则矩形,放置在不应圆角的圆角矩形的角上。
编辑:重新阅读您的问题,您最好为列表视图的顶部和底部制作一个简单的 9 补丁图像。它们可以在没有像素化的情况下以这种方式拉伸到任何尺寸。不过,这将要求您事先创建图像,并且使用矩形进行操作会更容易在以后的代码中进行修改。然而,9-patch 的方式会少一些 hack。
画一个圆角矩形,然后用相同颜色在圆角矩形上画一个普通矩形。