मैं ImageView
प्रोग्राम की चौड़ाई और ऊंचाई कैसे निर्धारित कर सकता हूं ?
मैं ImageView
प्रोग्राम की चौड़ाई और ऊंचाई कैसे निर्धारित कर सकता हूं ?
जवाबों:
यह बहुत देर हो सकती है लेकिन अन्य लोगों के लिए जो समान समस्या है, ImageView की ऊंचाई निर्धारित करने के लिए:
imageView.getLayoutParams().height = 20;
उम्मीद है की यह मदद करेगा।
जरूरी। यदि आप लेआउट को 'पहले से निर्धारित' कर चुके हैं, तो ऊंचाई निर्धारित कर रहे हैं, सुनिश्चित करें कि आप भी कॉल करें:
imageView.requestLayout();
image_view.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT
.. यदि दृश्य अभिभावक को LinearLayout
इसके RelativeLayout
साथ बदल दिया जाता है
यदि आपकी छवि दृश्य गतिशील है, तो getLayout युक्त उत्तर शून्य-अपवाद के साथ विफल हो जाएगा।
उस मामले में सही तरीका है:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
ImageView
गायब होना। ट्रिक को लेआउट पार्ट (यानी, <this_part_here>.LayoutParams
) को वैसा ही बनाना है जैसा कि माता-पिता का ImageView
है। तो, उदाहरण के लिए, यदि आप अपने दिए हैं ImageView
एक के भीतर TableRow
एक के भीतर TableLayout
, आप इसे के रूप में होना चाहिए TableRow.LayoutParams
।
अपना काम करने का यह सरल तरीका:
setContentView(R.id.main);
ImageView iv = (ImageView) findViewById(R.id.left);
int width = 60;
int height = 60;
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);
और दूसरा तरीका अगर आप ऊंचाई और चौड़ाई में स्क्रीन का आकार देना चाहते हैं तो नीचे दिए गए कोड का उपयोग करें:
setContentView(R.id.main);
Display display = getWindowManager().getDefaultDisplay();
ImageView iv = (LinearLayout) findViewById(R.id.left);
int width = display.getWidth(); // ((display.getWidth()*20)/100)
int height = display.getHeight();// ((display.getHeight()*30)/100)
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);
आशा है कि आप का पूरा उपयोग करें।
int
यदि वे कहीं और फिर से उपयोग नहीं किए जाएंगे तो लोग चर घोषित क्यों करते हैं? अनावश्यक लगता है, लेकिन मुझे इसके बारे में ज्यादा जानकारी नहीं है।
मैंने इसके साथ pixel
और खेला है dp
।
private int dimensionInPixel = 200;
पिक्सेल द्वारा कैसे सेट करें :
view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();
Dp द्वारा कैसे सेट करें :
int dimensionInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dimensionInPixel, getResources().getDisplayMetrics());
view.getLayoutParams().height = dimensionInDp;
view.getLayoutParams().width = dimensionInDp;
view.requestLayout();
आशा है कि यह आपकी मदद करेगा।
यदि आपको अपनी चौड़ाई या ऊंचाई match_parent
(अपने माता-पिता के रूप में बड़ी) या wrap_content
(अपनी आंतरिक सामग्री फिट करने के लिए पर्याप्त ) सेट करने की आवश्यकता है , तो ViewGroup.LayoutParams
यह दो स्थिरांक हैं:
imageView.setLayoutParams(
new ViewGroup.LayoutParams(
// or ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT,
// or ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT ) );
या आप उन्हें हकीम ज़ैद के जवाब की तरह सेट कर सकते हैं :
imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...
आप सभी मामलों के लिए मूल्य निर्धारित कर सकते हैं।
demoImage.getLayoutParams().height = 150;
demoImage.getLayoutParams().width = 150;
demoImage.setScaleType(ImageView.ScaleType.FIT_XY);
एक बटन को गतिशील रूप से सेट करने का सबसे अच्छा और आसान तरीका है
Button index=new Button(this);
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());
उपरोक्त ऊंचाई और चौड़ाई पिक्सल पीएक्स में हैं । 45 में ऊंचाई जा रहा है डी पी और 42 में चौड़ाई जा रहा है डी पी ।
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
उदाहरण के लिए, यदि आपने एक TableRayout के भीतर एक TableRow के भीतर अपना बटन रखा है, तो आपके पास TableRow.LayoutParams के रूप में होना चाहिए।
index.setLayoutParams(new TableRow.LayoutParams(width, height));
बस एक लेआउटप्रैम ऑब्जेक्ट बनाएं और इसे अपने इमेज व्यू में असाइन करें
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
image_view.getLayoutParams().height
पिक्सेल में ऊँचाई मान देता है। मूल्यों को ठीक से सेट करने के लिए आपको पहले स्क्रीन आयाम प्राप्त करने की आवश्यकता है।
Display display = context.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
int screen_height = outMetrics.heightPixels;
int screen_width = outMetrics.widthPixels;
स्क्रीन आयाम प्राप्त करने के बाद, आप उचित मार्जिन का उपयोग करके इमेजव्यू की चौड़ाई और ऊंचाई निर्धारित कर सकते हैं।
view.getLayoutParams().height = screen_height - 140;
view.getLayoutParams().width = screen_width - 130 ;
क्रम में ImageView और ऊंचाई को निर्धारित करने के लिए, आप कर सकते हैं
//Makesure you calculate the density pixel and multiply it with the size of width/height
float dpCalculation = getResources().getDisplayMetrics().density;
your_imageview.getLayoutParams().width = (int) (150 * dpCalculation);
//Set ScaleType according to your choice...
your_imageview.setScaleType(ImageView.ScaleType.CENTER_CROP);
परिदृश्य में जहां विजेट आकार को प्रोग्रामेटिक रूप से सेट करने की आवश्यकता होती है, नीचे दिए गए नियमों को सुनिश्चित करें।
LayoutParam
उस लेआउट के लिए सेट करें जिसमें आप वह दृश्य जोड़ रहे हैं । मेरे मामले में मैं जोड़ रहा हूँTableRow
ऐसाTableRow.LayoutParams
final float scale = getResources().getDisplayMetrics().density;
int dpWidthInPx = (int) (17 * scale);
int dpHeightInPx = (int) (17 * scale);
TableRow.LayoutParams deletelayoutParams = new TableRow.LayoutParams(dpWidthInPx, dpHeightInPx);
button.setLayoutParams(deletelayoutParams);
tableRow.addView(button, 1);
यदि आप छवि को केवल छवि दृश्य में फिट करना चाहते हैं, तो आप स्केल-प्रकार के साथ ऊँचाई और चौड़ाई की संपत्ति में "रैप कंटेंट" का उपयोग कर सकते हैं, लेकिन यदि आप मैन्युअल रूप से सेट करना चाहते हैं तो आपको लेआउटप्रैम का उपयोग करना होगा।
लेआउटपरम, लेआउट की ऊंचाई और चौड़ाई को प्रोग्रामेटिक रूप से सेट करने के लिए कुशल है।
int newHeight = 150;
int newWidth = 150;
holder.iv_arrow.requestLayout();
holder.iv_arrow.getLayoutParams().height = newHeight;
holder.iv_arrow.getLayoutParams().width = newWidth;
holder.iv_arrow.setScaleType(ImageView.ScaleType.FIT_XY);
holder.iv_arrow.setImageResource(R.drawable.video_menu);