2012-06-01 16 views
8

मैं एक बटन को ग्रे करना चाहता हूं, इसलिए यह उपयोगकर्ता को अक्षम दिखाई देता है, लेकिन फिर भी क्लिक के लिए सुनता है ताकि मैं उपयोगकर्ता को एक संदेश प्रदर्शित कर सकूं जो बताता है कि बटन लागू क्यों नहीं है।क्या मैं एक बटन अक्षम कर सकता हूं और अभी भी क्लिक के लिए सुन सकता हूं?

मैं यह सुनिश्चित करना चाहता हूं कि एंड्रॉइड एपीआई एक मानक मानक अक्षम उपस्थिति जो कॉन्फ़िगर कर रहा है, मैन्युअल रूप से बटन रंग को ग्रे रंग में सेट करने के विपरीत है। ऐसा करने का सबसे अच्छा तरीका क्या है?

संबंधित: Android - Listen to a disabled button

उत्तर

4

आप विकलांगों के लिए डिफ़ॉल्ट रूप से अपने बटन की पृष्ठभूमि को मैन्युअल रूप से सेट भी कर सकते हैं। लेकिन बटन सक्षम छोड़ने के लिए और

कुछ सामान्य फैशन में क्लिक ईवेंट संभाल की तरह इस यह करना चाहिए:

mBtn.setBackgroundResource(android.R.drawable.btn_default_normal_disabled); 
+0

कभी संस्करणों पर काम नहीं कर रहा है। – arenaq

0

मैं एक Android विशेषज्ञ नहीं हूँ, इसलिए वहाँ बेहतर तरीके से हो सकता है, लेकिन के बारे में क्या बटन को निष्क्रिय करने और एक पारदर्शी विचार है कि घटनाओं पकड़ेगा डालने?

आप हमेशा बटन के नीचे बिछाते हुए दृश्य देख सकते थे ताकि आपको ज़ेड-इंडेक्स को बदलने की जरूरत हो या आवश्यकता होने पर इसे गतिशील रूप से बनाएं।

+0

garph, कि एक दिलचस्प विचार है - मुझे यकीन है कि यह काम करेगा। मैं पहले कुछ अन्य समाधानों को आजमाने की कोशिश कर रहा हूं। –

-1

तुम भी (दोनों दबाया के लिए Button की शैली में धूसर हो देखो करने के लिए सेट कर सकते हैं और गैर दबाए गए राज्य), फिर setOnClickListener() सामान्य के रूप में, लेकिन onClick() विधि संदेश दें कि यह क्लिक करने योग्य नहीं है।

-1

चूंकि बटन टेक्स्टव्यू बढ़ाता है। आप टेक्स्टव्यू में विधियों का उपयोग कर सकते हैं जैसे .setTextColor() या .setBackgroundColor()।

अब प्रदर्शन के लिए आप 2 विकल्प हैं:

  • AlertDialog - एक चेतावनी प्रदर्शित करता है, लेकिन जब तक निर्दिष्ट नहीं आत्म पास करता है।
  • टोस्ट - किसी दिए गए समय पर एक टेक्स्ट प्रदर्शित करता है और स्वयं बंद हो जाता है।

अपना चुनाव लें।

+0

जुजू, धन्यवाद, लेकिन आपको इस सवाल में नहीं पढ़ना चाहिए था कि मैंने * रंग * मैन्युअल रूप से रंग बदलना नहीं चाहता था। –

9

यह कस्टम बटन है जो अक्षम होने पर स्पर्श की घटना का खुलासा करता है यह सुनिश्चित करने के लिए काम करता है, और परीक्षण किया जाता है। आपके लिए विशिष्ट

public class MyObservableButton extends Button 
{ 
public MyObservableButton(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

private IOnClickWhenEnabledListner mListner; 

public void setOnClickWhenEnabledListener(IOnClickWhenEnabledListner listener) { 
    mListner = listener; 
} 

private interface IOnClickWhenEnabledListner { 
    public void onClickWhenEnabled(); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) 
{  
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     if (!isEnabled() && mListner != null) { 
      mListner.onClickWhenEnabled(); 
     } 
    } 

    return super.onTouchEvent(event); 
} 

} 

एंड्रॉइड डेवलपर के रूप में मेरे दृष्टिकोण से आप जो चाहते हैं उसे पूरा करने का यह सही तरीका है।

सभी एंड्रॉयड के विचारों extanding कोई समस्या नहीं है, व एक्सएमएल फ़ाइलें पर उन्हें इस्तेमाल, और बदले स्रोत ..

सौभाग्य

+1

आप अतिरिक्त श्रोता से बच सकते हैं और केवल OnClickListener का उपयोग कर सकते हैं। OnTouchEvent() में PerformClick() जोड़ें – Patrick

संबंधित मुद्दे

 संबंधित मुद्दे