2011-03-11 4 views
10

मैंने अपनी गतिविधि पर टचएवेंट (टचइवेंट) पर लागू किया है। हालांकि, मैं जानना चाहता हूं कि इसे मुख्य सामग्री दृश्य गतिविधियों के आयोजन के रूप में पंजीकृत करने के लिए किन कदमों की आवश्यकता है। मैं उस टचवेन्ट को उस दृश्य के लिए सेट करना चाहता हूं जो गतिविधि की पूरी स्क्रीन स्पेस को कवर करता है। एक setContentView() है जो एक लेआउट आईडी लेता है। मैं मुख्य सामग्री दृश्य में ऑनटचएवेंट श्रोता के रूप में गतिविधि को कैसे पंजीकृत करूं? मैं इस दृश्य को पाने के लिए findByView (ActivityLayoutId) पर विचार कर रहा हूं, लेकिन यह सही या सर्वोत्तम तरीके से बिल्कुल प्रतीत नहीं होता है। धन्यवादAndroid संपूर्ण गतिविधि मुख्य सामग्री दृश्य के लिए OnTouchEvent को कैसे पंजीकृत करें?

+0

या यह गतिविधि में View.onTouchEvent को लागू करने के लिए पर्याप्त है और दृश्य इसके साथ ऑटो रजिस्टर करेगा? – Androider

+0

मैं सिर्फ इस स्क्रीन में जोड़े गए कुछ दृश्यों पर नहीं, संपूर्ण गतिविधि स्क्रीन पर स्पर्श ईवेंट को सक्रिय करने के लिए देख रहा हूं। – Androider

उत्तर

16

आप एक तरह से Activity#setContentView(int) के बाद एक दृश्य के रूप में अपनी सामग्री दृश्य प्राप्त करने के लिए देख रहे हैं, तो आप अपने लेआउट के बाहरी सबसे तत्व पर एक आईडी सेट कर सकते हैं:

android:id="@+id/entire_view" 

और इसे संदर्भ में setContentView के बाद अपने onCreate विधि:

View view = getViewById(R.id.entire_view); 
view.setOnTouchListener(... 
-1

क्रियाएँ onCreate() विधि:

onCreate(){ 
    setContentView(R.id.yourMainLayout); 
    View contentView = (View)findViewById(R.id.yourMainLayout); 
    contentView.setOnTouchListener((View.OnTouchListener)this); 
} 

जब तक किसी को एक बेहतर तरीका जानता है।

+1

आप अभी भी R.layout.yourMainLayout का उपयोग कर सकते हैं और लेआउट के भीतर आपको MainLayout आईडी के रूप में प्रदान कर सकते हैं – Androider

1
इस तरह

(onCreate में):

setContentView(R.layout.activity_main); 

View view = findViewById(R.id.main); 
view.setOnTouchListener(new View.OnTouchListener() { 

            @Override 
            public boolean onTouch(View view,MotionEvent event) { 


             return true; 

            } 
           }); 
संबंधित मुद्दे