मुझे विजेट्स के शुरुआती लेआउट और मेरी गतिविधि में विचारों के आधार पर कुछ वस्तुओं को तैयार करने की आवश्यकता है। मैं इसे शुरुआती चरणों में करना चाहता हूं, आदर्श रूप से क्रेट और ऑनस्टार्ट पर। जब हम अग्रभूमि में नहीं होते हैं तो परिवर्तनों की संभावना को ध्यान में रखते हुए, उनमें से कुछ को रेज़्यूम में होने की आवश्यकता हो सकती है।एंड्रॉइड पहले लेआउट कब करता है?
तो मैंने जांच की कि क्या मैं माप सकता हूं कि मेरे विचार कैसे निर्धारित किए गए थे।
Log.d("MyApp", "w,h of X is " + findViewById(R.id.X).getWidth() +
"," + findViewById(R.id.X).getHeight());
मैं onCreate, onStart, और onResume में इस भाग गया। प्रत्येक बार जब मैं चौड़ाई, ऊंचाई के लिए 0,0 मिलता है। अगर मैं टचवेन्ट की प्रतीक्षा करता हूं तो मुझे लेआउट जानकारी मिलती है, इसलिए लेआउट तब तक किया जाता है।
मुझे आश्चर्य है कि जब तक मैं रेज़्यूम पर देख रहा हूं तब लेआउट सेट और अंतिम नहीं है। मुझे उम्मीद है कि विगेट्स पहले ही रखे जाएंगे और तब तक बेवकूफ बनेंगे।
मैं onSizeChanged विधि पर एक स्टैक ट्रेस किया था और यह से आता है संदेश प्रेषण पाश। – Brian
वहाँ एक स्थापित करने के लिए एक तरीका हो प्रतीत नहीं होता है उपवर्गीकरण बिना हैंडलर "onSizeChanged" है, जो दुर्भाग्यपूर्ण है, क्योंकि कुछ लेआउट कंस्ट्रक्टर्स जरूरत नहीं है। आप कुछ ऐसा करने के लिए बहुत काम करना चाहते हैं जो तुच्छ होना चाहिए। –
@dpk आप ViewTreeObserver उपयोग कर सकते हैं ड्राइंग और लेआउट से संबंधित कॉलबैक का गुच्छा सेट और इस तरह देखने के उपवर्ग से बचने के लिए। –