2012-10-25 19 views
16

मैं इस सरल विधिimageView getLayoutParams() रिटर्न अशक्त

private ImageView getModuleIconView(Module module) { 
    ImageView view = new ImageView(context); 
    view.setImageResource(module.getIconResId());   
    view.getLayoutParams().height = 50; //NullPointerException 
    return view; 
} 

क्योंकि getLayoutParams अशक्त रिटर्न मैं NullPointer अपवाद मिल के साथ programicaly एक विजेट बना रहा हूं। ऐसा क्यों है?

+3

क्योंकि आपकी छविदृश्य हवा पर है, आपने इसे स्क्रीन पर नहीं रखा है। तो इसमें कोई लेआउट पैराम या कोई आकार नहीं है। – yahya

+0

उसे नहीं पता था। आप इसे एक उत्तर के रूप में पोस्ट कर सकते हैं मुझे लगता है कि –

उत्तर

45

क्योंकि आपकी छविदृश्य हवा पर है, आपने इसे स्क्रीन पर नहीं रखा है। तो इसमें कोई लेआउट पैराम या कोई आकार नहीं है।

यदि आप छवि की ऊंचाई 50 पर सेट करना चाहते हैं तो आप इस दृश्य के लेआउट सेटम सेट करने पर विचार कर सकते हैं ... आप लेआउट पैराम की ऊंचाई 50 के रूप में सेट कर सकते हैं। तो यह वही करेगा जो आप चाहते हैं।

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 50)); 
img.setLayoutParams(lp); 

इन पंक्तियों से 50 अपनी छवि की ऊंचाई सेट करेगी, लेकिन भूल नहीं है मैं यह सोचते हैं रहा है कि रैखिक लेआउट के रूप में अपने माता पिता के देखने के लिए, अगर ऐसा नहीं है, तो आप अपने layoutparams उपयोग करना चाहिए।

+0

मैं थोड़ा उलझन में हूं। 'लेआउटपार्म' के लिए कन्स्ट्रक्टर एक और 'लेआउट पैराम्स' ऑब्जेक्ट स्वीकार करता है जिसे आप अभी भी स्पॉट पर बनाते हैं? क्या आप उस मामले में केवल एक वस्तु बना सकते हैं? –

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