আমি কীভাবে একটি 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();
ডিপি দ্বারা কীভাবে সেট করবেন :
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());
উপরের উচ্চতা এবং প্রস্থ পিক্সেল px এ রয়েছে । 45 ডিপি মধ্যে উচ্চতা এবং 42 ডিপি প্রস্থ হয় ।
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
সুতরাং, উদাহরণস্বরূপ, আপনি যদি নিজের বোতামটি একটি টেবিলআউটগুলির মধ্যে একটি টেবিললাউটের মধ্যে রেখে দেন তবে আপনার এটি টেবিলরও হিসাবে হওয়া উচিত ay লেআউটপ্যারামস
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 ;
চিত্রভিউ এবং উচ্চতা প্রগ্রামক্রমে সেট করার জন্য, আপনি এটি করতে পারেন
//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);
kotlin
val density = Resources.getSystem().displayMetrics.density
view.layoutParams.height = 20 * density.toInt()
যে দৃশ্যে উইজেটের আকারটি প্রোগ্রামিকভাবে সেট করা দরকার সেখানে নীচের নিয়মগুলি নিশ্চিত করুন।
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);