状態を押して選択するボタンを作成しようとしていますが、タブでも同じことをしましたが、動作しますが、なぜここで動作しないのか分かりません。私はこのようにしました:
button_sel.xml
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<gradient Android:startColor="@color/azulado"
Android:endColor="@color/azulBrillante"
Android:angle="270" />
<corners Android:radius="@dimen/corner_radius" />
<stroke Android:width="2px"
Android:color="@color/blanco" />
</shape>
button_unsel.xml
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<gradient Android:startColor="@color/botonesD"
Android:endColor="@color/botones"
Android:angle="270" />
<corners Android:radius="@dimen/corner_radius" />
<stroke Android:width="2px"
Android:color="@color/blanco" />
</shape>
セレクターbutton.xml:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/button_sel"
Android:state_selected="true"
Android:state_pressed="true"/>
<item Android:drawable="@drawable/button_unsel"
Android:state_selected="false"
Android:state_pressed="false"/>
</selector>
そして、ここで私はドローアブルを背景として呼び出します:
<style name="button">
<item name="Android:background">@drawable/button</item>
<item name="Android:textSize">@dimen/text_size</item>
<item name="Android:padding">@dimen/padding_button</item>
<item name="Android:textColor">@color/blanco</item>
</style>
ありがとうございました!!!!
セレクターの最初の項目は、ボタンが押されて選択されたときにのみ使用されます。ボタンが押されたときにbutton_sel
を使用する場合は、ORを選択した場合、次のように実行する必要があります。
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/button_sel" Android:state_selected="true" />
<item Android:drawable="@drawable/button_sel" Android:state_pressed="true" />
<item Android:drawable="@drawable/button_unsel" />
</selector>
アイテムは上から下に評価され、最後のアイテムがデフォルトです。 state_selectedがボタンに意味があるかどうかはわかりませんが。
図形のインラインアイテムを使用できます。
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" >
<shape....>
</item>
<item Android:state_selected="true" >
<shape....>
</item>
<item Android:state_pressed="true" Android:state_selected="true" >
<shape...>
</item>
</selector>
サンプルの場合:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_selected="true" >
<shape
Android:shape="rectangle">
<gradient Android:startColor="@color/md_amber_300"
Android:endColor="@color/md_amber_50"
Android:angle="270" />
<corners Android:radius="@dimen/fab_margin" />
<stroke Android:width="2px"
Android:color="@color/primaryColorDark_orange" />
</shape>
</item>
<item Android:state_pressed="true" >
<shape
Android:shape="rectangle">
<gradient Android:startColor="@color/md_amber_300"
Android:endColor="@color/md_amber_50"
Android:angle="270" />
<corners Android:radius="@dimen/fab_margin" />
<stroke Android:width="2px"
Android:color="@color/primaryColorDark_orange" />
</shape>
</item>
<item Android:state_pressed="true" Android:state_selected="true" >
<shape
Android:shape="rectangle">
<gradient Android:startColor="@color/md_teal_500"
Android:endColor="@color/md_blue_400"
Android:angle="270" />
<corners Android:radius="@dimen/fab_margin" />
<stroke Android:width="2px"
Android:color="@color/md_amber_A400" />
</shape>
</item>
</selector>