如何在drawable shape XML选择器中制作底部边框?

10

我正在尝试为我的按钮创建具有不同状态的可绘制形状。因此,我编写了以下内容:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="@android:color/black" >
    <shape android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_pressed" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>
</item>
<item android:state_focused="true" android:color="@android:color/black" >
    <shape android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_focused" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>
</item>
<item android:color="@android:color/black" >
    <shape android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE" />
        <stroke
            android:width="1dp"
            android:color="@color/NEGATIVE" />
        <corners android:radius="4dp" />
    </shape>
</item>
</selector>

然后在我的按钮中,我使用它作为android:background="@drawable/btn_negative_selector"

但是,我想在该形状中绘制底部边框,比如说3 dp并且颜色不同,但我无法弄清楚如何实现。我尝试搜索,但没有找到适合选择器的内容。 有什么建议吗?

1个回答

25

首先,我要将形状分离出来,以便更易于管理。

这是您的btn_negative_selector.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@xml/rectangle_button_pressed" android:state_pressed="true"></item>
    <item android:drawable="@xml/rectangle_button_focused" android:state_focused="true"></item>
    <item android:drawable="@xml/rectangle_button" ></item>
</selector>
在你的res目录下创建一个名为“xml”的文件夹,并将这些形状保存到其中: 1)rectangle_button_pressed:
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_pressed" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>

2) 矩形按钮聚焦:

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_focused" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>

3) 通过使用<layer-list>定义一个形状,在这个rectangle_button.xml中将在其底部具有边框。第一个<item>是最底层,最后一个<item>是最上层。

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/gray"/>
            <corners android:radius="4dp"/>
        </shape>
    </item>
    <item android:bottom="3dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/orange" />
            <corners android:radius="4dp"/>
        </shape>

    </item>
</layer-list>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接