【发布时间】:2010-10-14 15:50:35
【问题描述】:
我可以创建一个所有边都是圆角的矩形。但是,我想要的是一个矩形,只有 2 个边缘是圆形的。这可能吗?
我实际上是在拼凑一个看起来像带有圆边的气泡的 ListView。我希望添加一个顶部边缘为圆形的页眉和两个底部边缘为圆形的页脚。
【问题讨论】:
我可以创建一个所有边都是圆角的矩形。但是,我想要的是一个矩形,只有 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 上运行(自?)。参考documentation,代码应如下所示:
<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 和android: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。
【讨论】:
画一个圆角矩形,然后用相同颜色在圆角矩形上画一个普通矩形。
【讨论】: