レイヤーリストをボタンのドロウアブルとしてどのように使用しますか。ボタンがあります:
<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>
ボタンセレクターでこのレイヤーリストをどのように使用しますか?
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"
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>
shape
タグをlayer-list
に置き換えるだけで、すべて正常に機能します。