web-dev-qa-db-ja.com

Androidボタンを選択してドロアブルを押します

状態を押して選択するボタンを作成しようとしていますが、タブでも同じことをしましたが、動作しますが、なぜここで動作しないのか分かりません。私はこのようにしました:

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>

ありがとうございました!!!!

30
croigsalvador

セレクターの最初の項目は、ボタンが押されて選択されたときにのみ使用されます。ボタンが押されたときに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がボタンに意味があるかどうかはわかりませんが。

54
brillenheini

図形のインラインアイテムを使用できます。

   <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>
8
Ahmad Aghazadeh