2012-08-15 14 views
11

की ऊंचाई प्राप्त करने के लिए मैं नीचे के रूप में match_parent के रूप में एक LinearLayout सेट ऊंचाई कम है।
मैं नीचे दिए गए कोड का प्रयोग किया:कैसे LinearLayout

LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout); 
int h = ll_list.getHeight(); 

लेकिन यह अशक्त लौट आते हैं।
मैं कैसे कर सकता हूं?

+0

जब तक आप बिटमैप्स के अनुकूलन के लिए एक पृष्ठभूमि कार्य करने जा रहे हैं (या कुछ समान) स्क्रीन पर उन्हें दिखाने से पहले, मैं वास्तव में किसी भी पल पर बात नहीं कर सकता, किसी को भी इस मूल्य की आवश्यकता होगी। यदि आप हमें अपने आवेदन के बारे में कुछ और बता सकते हैं, तो हम आपको एक बेहतर डिजाइन विकल्प के बारे में बता सकते हैं। – Budius

+0

http://stackoverflow.com/a/41705445/5664529 इसे देखें, यह आपकी मदद कर सकता है। –

उत्तर

36

सबसे पहले: अपने LinearLayout आईडी left_layout, नहीं list_layout है।

इसके अलावा, ll_list.getHeight() 0 (साथ ही ll_list.getWidth()) वापस लौटाएगा यदि इसे अभी तक खींचा नहीं गया है।

समाधान आपके विचार layouted होने के बाद ऊंचाई प्राप्त करने के लिए होगा:

ll_list.post(new Runnable(){ 
    public void run(){ 
     int height = ll_list.getHeight(); 
    } 
}); 

और सुनिश्चित करें कि आपके ll_listfinal है या नहीं।

+0

देखें इसे कैसे खींचा जाए। – brian

+0

@brian यह आपकी समस्या नहीं है। बस यह सुनिश्चित कर लें कि आप आकर्षित होने के बाद 'getHeight()' को कॉल कर रहे हैं। –

+0

@brian मैंने एक उदाहरण प्रदान किया है –

1
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout); 
                 ^^^^^^^^^^ 
+2

को प्रश्न में गलत टाइप किया जा सकता है। अगर यह मामला –

+0

मामला टाइप करें तो यह संकलित भी नहीं होगा। लेकिन यह अभी भी शून्य नहीं है। – brian

+0

अपना एक्सएमएल फ़ाइल नाम देखें और आईडी भी बदलें और फिर इसे –

-6

इस कोड का प्रयास करें:

public static int getViewDimensions(View v,String what){ 
    int result = 0; 
    if (what.equalsIgnoreCase("height")) { 
     result = v.getHeight(); 
    } else { 
     result = v.getWidth(); 
    } 
    return result; 

} 

तो onBackPressed() आप widht और किसी भी ViewLinear आप की जरूरत की ऊंचाई प्राप्त कर सकते हैं।

@Override 
public void onBackPressed() { 

    RelativeLayout banner = (RelativeLayout)findViewById(R.id.banner); 

    int h = getViewDimensions(banner, "height"); 
    int w = getViewDimensions(banner, "width"); 

    Log.v("Height*Widht", h +"*"+ w); 

} 
+1

किसी भी कारण से आपने केवल banner.getHeight() या banner.getWidth() को कॉल करने का सुझाव नहीं दिया है? – garlicman

+0

क्योंकि मैं कई विचारों की ऊंचाई और चौड़ाई जानना चाहता हूं इसलिए मैंने उपरोक्त फ़ंक्शन बनाया है। –

+0

और मैं दृश्य आयाम के अनुसार विभिन्न विचारों के बीच अधिक ऊंचाई और चौड़ाई को जानना चाहता हूं। –

0

आप पहली बार दृश्य ट्री ऑब्जर्वर का उपयोग यह इंतजार कर रहा है जब तक दृश्य जांच बनाई गई है प्रारंभ करने के लिए देखें प्रतीक्षा करने की आवश्यकता इस

get layout height and width at run time android

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