Android xml形状drawable - 如何绘制u形式?

时间:2012-04-16 17:28:13

标签: android xml shape

我需要创建一个xml形状drawable,它绘制一个没有顶线的矩形(“u-form”)。我能做的是绘制一个矩形,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<solid android:color="@color/detailrow_bg_normal" />

<corners
    android:bottomLeftRadius="0dp"
    android:bottomRightRadius="0dp"
    android:radius="1dp"
    android:topLeftRadius="10dp"
    android:topRightRadius="10dp" />

<padding
    android:bottom="2dip"
    android:left="1.5dip"
    android:right="1.5dip"
    android:top="8dip" />

<stroke
    android:width="1dip"
    android:color="@color/detailtable_border" />

但是如果可能的话,我可以在没有顶部(或底部)线的情况下定义相同的形状吗?

3 个答案:

答案 0 :(得分:10)

您可以尝试使用图层列表。看看这样的东西是否有效:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape android:shape="rectangle">
            <solid android:color="@color/detailtable_border" />
        </shape>
   </item>

   <item android:left="1.5dp" android:right="1.5dp" android:bottom="2dp">
      <shape android:shape="rectangle">
        <solid android:color="@color/detailrow_bg_normal" />
      </shape>
   </item>
</layer-list>

这个(应该)用边框颜色填充矩形,然后用默认背景颜色覆盖它,留下适当数量的右/左/下边框颜色。

答案 1 :(得分:2)

尝试此代码并引用此link :::

我用这个解决了一个很好的解决方案:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
    <item android:top="-1dp" android:right="-1dp" android:left="-1dp">
      <shape>
            <solid android:color="@android:color/transparent" />
            <stroke android:width="1dp" android:color="#ffffff" />
      </shape>
    </item>

</layer-list>

这适用于你需要透明色但仍然是开放笔触颜色的情况(在我的情况下我只需要一个底线)。如果您需要背景颜色,可以添加固体形状颜色,如上面的答案。

答案 2 :(得分:0)

您可以使用两个形状和一个LayerList来实现这一目标,但我认为这是一个更好的解决方案,更容易使用NinePatch - drawable。