2012-05-02 18 views
11

में घटकों की चौड़ाई और ऊंचाई प्राप्त करें मुझे फ्रैगमेंट व्यू में सभी घटक की पहले से मूल्यांकन की चौड़ाई और ऊंचाई तक पहुंच की आवश्यकता है। तो मुझे कुछ अधिसूचना चाहिए जो मुझे बताए, कि खंड लेआउट चरण का विचार पहले से ही किया जा चुका है।फ्रैगमेंट व्यू

गतिविधि में मैं onWindowFocusChanged(boolean hasFocus) जीवन चक्र विधि का उपयोग कर सकता हूं, लेकिन खंड में इस विधि नहीं है।

मुझे जिस तरह से मिला वह getView().addOnLayoutChangeListener() का उपयोग करता है। लेकिन यह कई बार कॉल करता है और केवल अंतिम कॉल मेरे लिए उपयोगी है।

विभाजन के दृश्य में लेआउट के बाद कुछ कॉल करने के लिए किसी भी बेहतर तरीके से मौजूद है?

+0

संबंधित प्रश्न http://stackoverflow.com/questions/14397959/capture-layout-resize-before-api-11 –

उत्तर

1

आप वास्तव में एक लेआउट पास मैन्युअल रूप से ट्रिगर कर सकते हैं - आपको उपयुक्त MeasureSpecs के साथ View.measure(int,int) पर कॉल करने की आवश्यकता है। उदाहरण के लिए टुकड़ा एक माता पिता को देखने parentView के साथ संलग्न किया जा सकता है, और आप इसे एक ही आकार के लिए चाहते हैं, तो आप यह करते हैं चाहते हैं:

View fragmentView = fragment.getView(); 
fragmentView.measure(MeasureSpec.makeMeasureSpec(parentView.getMeasuredWidth(), 
               MeasureSpec.EXACTLY), 
        MeasureSpec.makeMeasureSpec(parentView.getMeasuredHeight(), 
               MeasureSpec.EXACTLY)); 

कैसे उपाय/लेआउट काम गुजरता है के बारे में अधिक: http://developer.android.com/reference/android/view/View.html#Layout

+0

लेकिन माप केवल अनुशंसित आकार दें, वास्तविक आकार लेआउट पास के बाद पता है। और मुझे इसे मैन्युअल रूप से चलाने की आवश्यकता नहीं है, क्योंकि एंड्रॉइड इसे फिर से चलाता है (मुझे लगता है)। – ATom

+0

यह वास्तव में सिर्फ एक अनुशंसित आकार नहीं है। माप पास का उपयोग इस विचार को बताने के लिए किया जाता है कि "यह वही है जो आप प्राप्त करते हैं, अपनी इच्छा के अनुसार इसका उपयोग करें"। उदाहरण के लिए सूची दृश्य में, चौड़ाई के लिए बाधा बिल्कुल सही है, और ऊंचाई के लिए यह अनसुलझा है। आप सही हैं कि मापा आकार हमेशा लेआउट आकार के समान नहीं होता है, लेकिन यह लगभग हमेशा होता है। मुझे सच में यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं? –

+0

मुझे केवल खंड के बाद अधिसूचित होने की आवश्यकता है और इसकी सामग्री पहले ही माप और लेआउट पास समाप्त हो चुकी है और सभी आयाम अंतिम हैं। – ATom

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