web-dev-qa-db-ja.com

Androidボタンセレクターにレイヤーリストを使用

レイヤーリストをボタンのドロウアブルとしてどのように使用しますか。ボタンがあります:

<item Android:state_pressed="true">
    <shape>
        <gradient Android:endColor="@color/white"
            Android:startColor="@color/grey_blue_light" Android:angle="90" />
        <stroke Android:width="1dp" Android:color="@color/aqua_blue" />
        <corners Android:radius="3dp" />
        <padding Android:left="10dp" Android:top="10dp"
            Android:right="10dp" Android:bottom="10dp" />
    </shape>
</item>


<item Android:state_focused="true">

</item>
<item>

</item>

次に、ボタンの状態が押されたときにレイヤーリストをシェイプとして使用する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
    <shape Android:shape="oval">
        <solid Android:color="@color/aqua_blue" />
    </shape>
</item>
<item Android:top="1dp" Android:left="1dp" Android:right="1dp" Android:bottom="1dp">
    <shape Android:shape="oval">
        <solid Android:color="@color/aqua_blue" />
    </shape>
</item>

ボタンセレクターでこのレイヤーリストをどのように使用しますか?

45
Amandeep Chugh

Step-1ボタンの3つの異なる状態に対して、3つの異なるlayer_list xmlをdrawableフォルダーの下に作成します。たとえば、これらのxmlの名前はlayer1.xml, layer2.xml, layer3.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    >
    <item>
        <shape
            xmlns:Android="http://schemas.Android.com/apk/res/Android"
            Android:shape="rectangle"
            >

            <gradient
                Android:angle="270"
                Android:startColor="#0000ff"
                Android:endColor="#0000dd"
                Android:type="linear"
                />    
        </shape>
    </item>

</layer-list>

Step-2 btn_background.xmlという名前のセレクターxmlを作成し、drawable属性でlayer_list xmlを渡します

<selector
    xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:state_pressed="true" Android:drawable="@drawable/layer1">

    </item>

    <item Android:state_focused="true" Android:drawable="@drawable/layer2">

    </item>

    <item Android:drawable="@drawable/layer3">        

    </item>
</selector>

step-ボタンの背景としてセレクターxmlを設定しますAndroid:background="@drawable/btn_background"

123

Mygodの答えは、実際には受け入れられているものよりも優れています。動作し、1つのxmlファイルのみが必要です。これは私がやったのと似たようなものです。背景を透明のドローアブルの下に設定します。同じことが背景と形でできます:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:state_selected="true">
        <layer-list>
            <item Android:drawable="@color/Black"/>
            <item Android:drawable="@drawable/notes_white"/>
        </layer-list>
    </item>

    <item>
        <layer-list>
            <item Android:drawable="@color/White"/>
            <item Android:drawable="@drawable/notes_black"/>
        </layer-list>
    </item>

</selector>
8
Clark Battle

shapeタグをlayer-listに置き換えるだけで、すべて正常に機能します。

2
Mygod