2012-11-18 29 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

आपके चयनकर्ता में पहला आइटम केवल तभी उपयोग किया जाता है जब बटन दबाया जाता है और चुना जाता है। आप 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> 

आइटम ऊपर से नीचे तक मूल्यांकन किया जाता है, पिछले एक डिफ़ॉल्ट है। हालांकि मुझे यकीन नहीं है कि अगर राज्य का चयन बटन के लिए समझ में आता है।

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