web-dev-qa-db-ja.com

ドローアブルシェイプXMLセレクターで下の境界線を作成するにはどうすればよいですか?

ボタンの状態が異なる描画可能な形状を作成しようとしています。だから私はこれを書いた:

<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のように色が違うのですが、どうすればいいのかわかりません。検索してみましたが、セレクターに適したものが見つかりませんでした。何か提案をお願いします。

10
Igal

まず、形状を分離して管理しやすくします。

これはあなたの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>

解像度に「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)rectangle_button_focused:

    <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)この1つのrectangle_button.xmlは、<layer-list>.を使用して形状を定義することにより、下部に境界線があります。最初の<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>
20
Karim