2010-06-03 13 views
65

मैं LayoutParams को ImageView के लिए सेट करना चाहता हूं लेकिन ऐसा करने के लिए उचित तरीका नहीं लग रहा है।आप ImageView के लिए LayoutParams() कैसे सेट करते हैं?

मैं केवल विभिन्न ViewGroups के लिए एपीआई में दस्तावेज़ीकरण पा सकता हूं, लेकिन ImageView नहीं। फिर भी ImageView में यह कार्यक्षमता प्रतीत होती है।

इस कोड काम नहीं करता ...

myImageView.setLayoutParams(new ImageView.LayoutParams(30,30)); 

मैं इसे कैसे करते हैं?

उत्तर

147

आप क्योंकि यह दृश्य की मूल है तो आप एक

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30); 
yourImageView.setLayoutParams(layoutParams); 

यह वह जगह है बनाने ViewGroup imageView, बैठी है। उदाहरण के लिए यदि आपके imageView एक LinearLayout अंदर है की LayoutParams निर्धारित करने की आवश्यकता है कि यह जानने की जरूरत है कि दृश्य को आवंटित करने के लिए आकार क्या है।

+2

आप जानते हैं ... आपने जो कहा वह काम किया। लेकिन मैंने पहले ही उस अवधारणा को समझ लिया था लेकिन बड़ी गलती कर रहा था। आप देखते हैं कि मेरे टेबलव्यूआउट में मेरी छवि दृश्य थी ... इसलिए मैं TableLayout.setLayoutParams का उपयोग कर रहा था। लेकिन यह दुर्घटनाग्रस्त हो जाएगा। जब मैंने इसके बारे में गहराई से सोचा, तो मुझे अंततः काम करने के लिए TableRow.setLayoutParams पर ड्रिल करने की आवश्यकता थी। मेरे मस्तिष्क के काम को करने के लिए धन्यवाद। 'बैठे हुए' ने इसे मेरे लिए ट्रिगर किया ... इस सामान को कम करना होगा। – DeadTime

+20

मुझे खुशी है कि मैं मदद कर सकता हूं। अगर आपकी समस्या हल हो जाती है, तो क्या आप इसे स्वीकृत उत्तर के रूप में चिह्नित कर सकते हैं? यह पाठ के बाईं ओर टिकमार्क है। –

+0

हाय @ स्टेवेहेली, चौड़ाई और ऊंचाई पैरामीटर यहां पिक्सेल सही हैं? मेरा अनुभव दिखाता है कि यह यहां चौंकाने वाला खाली है: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#LinearLayout.LayoutParams(int, int) – ericn

14

पुराना धागा लेकिन मुझे अब भी यही समस्या थी।

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30); 
yourImageView.setLayoutParams(layoutParams); 

यह केवल यदि आप एक LinearLayout करने के लिए एक subview के रूप imageView जोड़ने काम करेगा: किसी को भी इस का सामना करना पड़ता है तो वह शायद इस सवाल का जवाब मिल जाएगा। चौड़ाई/ऊंचाई बदलने के लिए,

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30); 
yourImageView.setLayoutParams(layoutParams); 
4

यदि आप किसी मौजूदा imageView के लेआउट बदल रहे हैं, तो आप बस वर्तमान LayoutParams प्राप्त करने में सक्षम होना चाहिए, और: यदि आप एक RelativeLayout में जोड़ने, तो आप कॉल करना होगा इसे वापस सेट करें:

android.view.ViewGroup.LayoutParams layoutParams = myImageView.getLayoutParams(); 
layoutParams.width = 30; 
layoutParams.height = 30; 
myImageView.setLayoutParams(layoutParams); 

मुझे नहीं पता कि यह आपका लक्ष्य है, लेकिन यदि ऐसा है, तो यह शायद सबसे आसान समाधान है।

6

एक छवि दृश्य दृश्य से सेटआउटआउट प्राप्त करता है जो ViewGroup.LayoutParams का उपयोग करता है। यदि आप इसका उपयोग करते हैं, तो यह ज्यादातर मामलों में दुर्घटनाग्रस्त हो जाएगा, इसलिए आपको GetLayoutParams() का उपयोग करना चाहिए जो View.class में है। यह ImageView के मूल दृश्य का उत्तराधिकारी होगा और हमेशा काम करेगा। आप यहाँ इस बात की पुष्टि कर सकते हैं: ImageView extends view

मान लें कि आप एक imageView के रूप में 'image_view' और चौड़ाई/ऊंचाई पूर्णांक के रूप में 'thumb_size'

सबसे अच्छा तरीका है परिभाषित परिभाषित इस क्या करना है:

ViewGroup.LayoutParams iv_params_b = image_view.getLayoutParams(); 
iv_params_b.height = thumb_size; 
iv_params_b.width = thumb_size; 
image_view.setLayoutParams(iv_params_b); 
संबंधित मुद्दे