2012-04-23 14 views
8

मुझे FrameLayout कंटेनर मिला है जिसमें कई चीजें हैं (ScrollView, WebView, ViewPager ...)।मैं व्यू ग्रुप के सभी बच्चों पर सभी स्पर्श ईवेंट कैसे अक्षम कर सकता हूं?

मैं इस कंटेनर पर onClick ईवेंट को गति प्रदान करने में सक्षम होना चाहते हैं, लेकिन ऐसा लगता है कि ScrollView, WebView और ViewPager अवरोधन स्पर्श घटना के कुछ है, क्योंकि onClick ईवेंट केवल जब मैं के कुछ हिस्सों पर क्लिक करें शुरू हो रहा है कंटेनर जिसमें उनमें से कोई भी नहीं है ...

कंटेनर के बच्चों पर टच ट्रिगर करने में सक्षम होने के लिए मैं इसमें सभी स्पर्श ईवेंट कैसे अक्षम कर सकता हूं?

अद्यतन

विचार एंड्रॉयड 3.2, अर्थात् में कार्य प्रबंधक की तरह कुछ जहां ऐप की वर्तमान दृश्य स्क्रीन एक कम चिह्न के रूप में दिखाया गया है, कि क्लिक किया जा सकता है।

धन्यवाद

उत्तर

15

हो सकता है कि मैं कुछ गलत समझा है, लेकिन मैं आपके सवाल का जवाब लगता है कि बहुत सरल है: आप के लिए नहीं करना चाहते हैं बच्चों को स्पर्श घटनाओं में से कोई भी प्रेषण - तो आप केवल ViewGroup.onInterceptTouchEvent (MotionEvent ev)API reference इस तरह ओवरराइड करने के लिए की जरूरत है:

public boolean onInterceptTouchEvent (MotionEvent ev){ 
    return true; 
} 

एंड्रॉइड प्रलेखन के अनुसार इसका मतलब है कि आपका व्यू ग्रुप हमेशा सभी स्पर्श घटनाओं को रोक देगा और उन्हें बच्चों को प्रेषित नहीं करेगा। उन सभी को आपके ViewGroup की ViewGroup.onTouchEvent(MotionEvent ev) विधि पर निर्देशित किया जाएगा।

0

आप उन्हें इस तरह अक्षम कर सकते हैं:

FrameLayout parent = (FrameLayout)findViewById(some_id); 
disableChildsOnTouch(parent) 


public void disableChildsOnTouch(ViewGroup viewGroup){ 
    int cnt = viewGroup.getChildCount(); 
    for (int i = 0; i < cnt; i++){ 
     View v = viewGroup.getChildAt(i); 
     if (v instanceof ViewGroup){ 
      disableChildsOnTouch((ViewGroup)v); 
     } else { 
      v.setOnTouchListener(null); 
      v.setOnClickListener(null); 
      //v.SETYOURLISTENER(null) 
     } 
    } 
} 
+0

स्क्रॉलव्यू अभी भी स्क्रॉल करता है, और कंटेनर ऑनक्लिक अभी भी सभी बच्चों को अक्षम करते समय ट्रिगर नहीं किया जाता है ... :( – jul

+0

स्क्रॉलव्यू स्क्रॉल नहीं होना चाहिए? यदि नहीं, तो आप स्क्रॉल व्यू और अक्षम होने पर उपरोक्त 'देखें v' का परीक्षण कर सकते हैं वहां स्क्रॉलिंग। मैं आपको कम जानकारी के साथ और अधिक नहीं बता सकता। आप कम से कम अपने एक्सएमएल को देखने के लिए पोस्ट कर सकते हैं, समस्या क्या हो सकती है –

+0

मैंने अपना प्रश्न अपडेट किया है कि मैं ऐसा क्यों करना चाहता हूं। मैं नहीं करता हूं ' टी अधिक जानकारी की आवश्यकता नहीं है: मैं केवल ऑनक्लिक घटना को ट्रिगरव्यू, व्यूपार्जर जैसे दृश्य समूह पर ट्रिगर करने में सक्षम होना चाहता हूं ... – jul

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

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