2013-01-12 20 views
15

क्या वर्तमान में मेरी गतिविधि में सेट एक्सएमएल में रूट लेआउट (जो कि अन्य सभी लेआउट के लिए मूल है) पर जाने का एक गतिशील तरीका है?गतिविधि में रूट लेआउट पाएं

this.findTopLayout(); 

:

क्या मैं के बाद कर रहा हूँ मेरी जड़ लेआउट एक स्पष्ट आईडी दे रही है और findViewById के माध्यम से इसे खोजने के बजाय है, मैं

छद्म कोड की तर्ज पर कुछ पाने के लिए आशा करती हूं कि पहले से ही setContentView(R.layout.foo);

मैं उस चाल में कुछ भी नहीं देख रहा हूं जो चाल करेगा, क्या मैं इसे याद कर रहा हूं, या ऐसा करने का कोई तरीका नहीं है?

+1

क्या आप यह देख रहे हैं? http://stackoverflow.com/questions/4486034/get-root-view-from-current-activity – DeeV

+0

ऐसा लगता है कि यह वही है जो मैं ढूंढ रहा हूं ... आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए, और मैं ' आपको हरा चेकमार्क देगा (और बहुत बहुत धन्यवाद) –

उत्तर

48

आप जड़ लेआउट पाने के लिए इस तरह की कोशिश:।।

GetWindow() getDecorView() findViewById (android.R.id.content); ।।

या

GetWindow() getDecorView() getRootView();

+0

चाल है! –

2

ध्यान दें कि अलग विधि Grishu द्वारा वर्णित से, आप भी विधि getParentकिसी भी दृश्य पर उपयोग कर सकते हैं कि देखने के माता-पिता को पाने के लिए (इस बटन, imageviews, लेआउट, आदि शामिल हैं) (माता-पिता लौटे एक माता पिता भी हो सकता है)। इसलिए, जब तक माता-पिता रिटर्न शून्य न हो जाए, तब तक एक विशेष दृश्य से getParent पर एक वैकल्पिक विधि लूप होगी। उस बिंदु पर, आपको अपने सामग्री दृश्य का मूल दृश्य मिल जाएगा।

+0

हाँ, यह दूसरी दिशा में उपयोगी है, लेकिन मुझे उम्मीद है कि लेआउट के बारे में कुछ भी जानने से बचने के लिए और शीर्ष पर बस नीचे जाने के लिए मुझे उम्मीद है (और टिप्पणियां उस सटीक उत्तर देने लगती हैं)। –

+0

आपको लेआउट के बारे में कुछ भी जानने की आवश्यकता नहीं है या getParent को कॉल करते समय भी देखें। –

+0

नहीं, लेकिन मुझे पहले आईटी पर जाने के लिए बच्चे की आईडी जाननी होगी, है ना? या क्या मैं कुछ न कुछ भूल रहा हूं? –

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