2012-11-18 4 views
22

상태 언론에서 버튼을 만들고 선택하려고합니다. 이미 탭을 사용하여 동일한 작업을 수행했지만 작동하지만 여기서는 작동하지 않습니다. 나는 이런 식으로 일을했다 :안드로이드 버튼 선택 및 드로어 블 가능

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> 

감사합니다 !!!!

답변

48

선택기의 첫 번째 항목은 버튼을 누르고 선택할 때만 사용됩니다. 당신이 당신의 버튼을 누르면 OR를 선택하면 button_sel를 사용하려면, 다음과 같이해야합니다 :

의 항목은 위에서 아래로 평가됩니다
<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가 버튼에 대해 이해가되는지 확신 할 수 없지만.

+2

감사합니다. 그것은 그 것이었다!! – croigsalvador

5

모양 인라인 항목을 사용할 수 있습니다. 샘플에 대한

<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>