2012-12-26 21 views
32

मैं एक बटन है और मैं इसे अलग पृष्ठभूमि करना चाहते हैं जब मैं सेट:राज्य सूची drawable और विकलांग राज्य

android:enabled="false" 

यहाँ पृष्ठभूमि के लिए संसाधन फ़ाइल है:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="false" 
      android:drawable="@drawable/bttn_orange_normal" /> <!-- pressed --> 
    <item android:state_pressed="true" 
      android:drawable="@drawable/bttn_orange_selected" /> <!-- focused --> 
    <item android:state_enabled="false" android:drawable="@drawable/bttn_grey_disabled"/> 
    <item android:state_enabled="true" android:drawable="@drawable/bttn_orange_normal"/> 
</selector> 

लेकिन बटन अभी भी सामान्य है पृष्ठभूमि अक्षम होने पर पृष्ठभूमि। मुझे क्या याद आ रही है?

+2

कोशिश: उदाहरण के लिए यदि आप जब आइटम अक्षम किया गया है एक विशेष दबाया राज्य करना चाहते थे, तो आपको निम्न आइटम को परिभाषित करेगा state_enabled = "true" –

+0

झूठी दबाया नहीं है दबाया । भी, किसी राज्य को निर्दिष्ट नहीं करना गलत है, या तो। इसका मतलब है कि यह नहीं माना जाता है। इसलिए, यहां आपका नियम किसी भी समय बटन दबाए जाने का मतलब नहीं है, इसमें सामान्य बीजी है। – njzk2

+0

आपको अंतिम आइटम के ** android: state_enabled = "true" ** को हटाना होगा, इस तरह अन्य सभी स्थितियों में ** @ drawable/bttn_orange_normal ** होगा। एक बार आपका बटन डिब्बाबंद हो जाने पर इसे ** @ drawable/bttn_grey_disabled ** सही जगह पर मिलेगा। इसके अलावा आपको उस लाइन को हटाना होगा जिसमें ** android: state_pressed = "false" ** है क्योंकि यह *** एंड्रॉइड की परिभाषा को ओवरराइड करेगा: state_enabled = "false" *** – alexscmar

उत्तर

97

रखें इस लाइन: (यह, पहला आइटम होना चाहिए अन्यथा यह काम नहीं करेगा) selector टैग की <item android:state_enabled="false" android:drawable="@drawable/bttn_grey_disabled"/>के रूप में पहले आइटम।

अंतिम:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
      <item android:state_enabled="false" android:drawable="@drawable/bttn_grey_disabled"/> 
      <item android:state_pressed="false" 
       android:drawable="@drawable/bttn_orange_normal" /> <!-- pressed --> 
      <item android:state_pressed="true" 
       android:drawable="@drawable/bttn_orange_selected" /> <!-- focused --> 
      <item android:state_enabled="true" android:drawable="@drawable/bttn_orange_normal"/> <!-- idle state --> 
</selector> 
+14

यह क्यों है !? पागल बेवकूफ नियम:/ – Estel

+1

यह क्यों काम करता है ???? वैसे भी धन्यवाद – Orr

+1

यह क्या है? किस कारण से .. वैसे भी यह मेरे लिए काम करता है .. –

16

विन्सेंट Ducastel के जवाब सही है, लेकिन यह का वर्णन नहीं करता क्यों समाधान काम करता है।

जब एंड्रॉइड उपलब्ध वस्तुओं की सूची को पार करता है, तो यह प्रत्येक मामले में शीर्ष से नीचे की सूची को पार करता है, यह मूल्यांकन करता है कि दृश्य की वर्तमान स्थिति प्रत्येक आइटम के लिए परिभाषित राज्यों से मेल खाती है या नहीं। यह शर्तों से मेल खाता पहला आइटम चुनता है और बाकी को अनदेखा करता है।

यही कारण है कि आपको हमेशा सूची के नीचे एक डिफ़ॉल्ट आइटम प्रदान करना चाहिए और जटिल चयन स्थितियों को प्रदर्शित करने का साधन भी प्रदान करना चाहिए। पहले आइटम अनुभाग एंड्रॉयड पर जोड़ने के लिए

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    ... 
    <item android:state_enabled="false" android:state_pressed="false" android:drawable="@drawable/btn_grey_disabled"/> 
    <item android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/btn_white_disabled_selected"/> 
    ... 
</selector> 
संबंधित मुद्दे