创建仅具有两个圆边的矩形形状

时间:2010-10-14 15:50:36

标签: android shape

我可以创建一个矩形的形状,所有边都是圆角的。但是,我想要的是一个矩形形状,只有2个边缘是圆形的。这可能吗?

我基本上将ListView看起来像一个带有圆边的气泡。我想添加一个标题,其中两个顶部边缘是圆形的,页脚是两个底部边缘倒圆。

7 个答案:

答案 0 :(得分:42)

<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>

答案 1 :(得分:19)

您可能会觉得这很有帮助。

<?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>

答案 2 :(得分:17)

我将android:radius属性更改为android:topRightRadiusandroid:topLeftRadius

答案 3 :(得分:2)

我认为最好(根据我对你的问题的理解)是创建一个9patch图像并将其用作背景 - 可以根据需要定义拉伸,并在XML级别设置,以节省一些代码工作

答案 4 :(得分:1)

<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>

使用上面的代码

答案 5 :(得分:0)

我会尝试绘制一个圆角矩形,然后绘制两个与圆角矩形的圆角半径相同大小的矩形,并将它们放在您不想圆角的角落中。

例如,一个半径为15像素的圆角矩形和两个规则的矩形15x15px,放在圆角矩形的角落里,不应该是圆角。

编辑:重新阅读您的问题,您可能最好为列表视图的顶部和底部制作一个简单的9补丁图像。它们可以在没有像素化的情况下延伸到任何尺寸。但是,这需要您事先创建图像,并且稍后在代码中更容易修改矩形形状。然而,9补丁方式不那么糟糕了。

答案 6 :(得分:-2)

绘制一个圆角矩形,然后在具有相同颜色的圆角矩形上绘制一个普通矩形。