आप अपनी गतिविधि में सभी स्पर्श ईवेंट रोकना ओवरराइड कर सकते हैं, भले ही आप है स्क्रॉलव्यू, बटन इत्यादि जैसे कुछ दृश्य जो टच इवेंट का उपभोग करेंगे।
ViewGroup.requestDisallowInterceptTouchEvent
के साथ संयोजन, आप व्यू ग्रुप की स्पर्श घटना को अक्षम कर सकते हैं। उदाहरण के लिए, यदि आप कुछ ViewGroup में सभी स्पर्श घटना को निष्क्रिय करना चाहते, इस कोशिश: गतिविधि # dispatchTouchEvent ओवरराइड
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
requestDisallowInterceptTouchEvent(
(ViewGroup) findViewById(R.id.topLevelRelativeLayout),
true
);
return super.dispatchTouchEvent(event);
}
private void requestDisallowInterceptTouchEvent(ViewGroup v, boolean disallowIntercept) {
v.requestDisallowInterceptTouchEvent(disallowIntercept);
int childCount = v.getChildCount();
for (int i = 0; i < childCount; i++) {
View child = v.getChildAt(i);
if (child instanceof ViewGroup) {
requestDisallowInterceptTouchEvent((ViewGroup) child, disallowIntercept);
}
}
}
(..) विधि आप देखें से पहले सभी स्पर्श ईवेंट अवरोधन करने की अनुमति देता है: एस उन्हें देखकर । – Jens
@ जेन्स यह सच है, लेकिन यह 'डायलॉगफ्रैगमेंट' पर स्पर्श को अवरुद्ध नहीं करता है (क्योंकि यह शायद किसी अन्य विंडो से संबंधित है) –
मुझे लगता है कि आपने WindowManager # addView (..) का उपयोग करके अपनी सभी TYPE_SYSTEM_ALERT विंडो डालने का प्रयास किया है? – Jens