Bagaimana saya bisa mengatur ImageView
lebar dan tinggi suatu program?
Bagaimana saya bisa mengatur ImageView
lebar dan tinggi suatu program?
Jawaban:
Mungkin sudah terlambat tetapi demi orang lain yang memiliki masalah yang sama, untuk mengatur ketinggian ImageView:
imageView.getLayoutParams().height = 20;
Semoga ini membantu.
Penting. Jika Anda mengatur ketinggian setelah tata letak telah 'ditata', pastikan Anda juga menelepon:
imageView.requestLayout();
image_view.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT
.. Jika tampilan induk LinearLayout
diganti RelativeLayout
dengan itu
Jika tampilan gambar Anda dinamis, jawaban yang berisi getLayout akan gagal dengan null-exception.
Dalam hal ini cara yang benar adalah:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
ImageView
menghilang. Caranya adalah membuat tata letak bagian (yaitu, <this_part_here>.LayoutParams
) sama dengan apa yang menjadi induknya ImageView
. Jadi, misalnya, jika Anda telah menempatkan ImageView
dalam Anda di TableRow
dalam TableLayout
, Anda harus memilikinya sebagai TableRow.LayoutParams
.
Cara sederhana ini untuk melakukan tugas Anda:
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);
dan cara lain jika Anda ingin memberikan ukuran dan tinggi layar lebar kemudian gunakan kode di bawah ini:
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);
harap gunakan penuh untuk Anda.
int
variabel jika mereka tidak akan digunakan kembali di tempat lain? Sepertinya tidak perlu tapi saya tidak tahu banyak tentang itu tbh.
Saya telah memainkan ini dengan pixel
dan dp
.
private int dimensionInPixel = 200;
Cara mengatur oleh piksel :
view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();
Cara mengatur oleh dp :
int dimensionInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dimensionInPixel, getResources().getDisplayMetrics());
view.getLayoutParams().height = dimensionInDp;
view.getLayoutParams().width = dimensionInDp;
view.requestLayout();
Semoga ini bisa membantu Anda.
Jika Anda perlu mengatur lebar atau tinggi badan Anda match_parent
(sebesar induknya) atau wrap_content
(cukup besar agar sesuai dengan konten internalnya sendiri), maka ViewGroup.LayoutParams
buatlah dua konstanta ini:
imageView.setLayoutParams(
new ViewGroup.LayoutParams(
// or ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT,
// or ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT ) );
Atau Anda dapat mengaturnya seperti dalam jawaban Hakem Zaied :
imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...
Anda dapat menetapkan nilai untuk semua kasing.
demoImage.getLayoutParams().height = 150;
demoImage.getLayoutParams().width = 150;
demoImage.setScaleType(ImageView.ScaleType.FIT_XY);
Cara terbaik dan termudah untuk mengatur tombol secara dinamis adalah
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());
Tinggi dan lebar di atas adalah dalam piksel px . 45 menjadi tinggi dalam dp dan 42 menjadi lebar dalam dp .
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
Jadi, misalnya, jika Anda meletakkan tombol di dalam TableRow di dalam TableLayout, Anda harus menjadikannya sebagai TableRow.LayoutParams
index.setLayoutParams(new TableRow.LayoutParams(width, height));
Cukup buat objek LayoutParams dan tetapkan ke imageView Anda
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
image_view.getLayoutParams().height
mengembalikan nilai tinggi dalam piksel. Anda harus mendapatkan dimensi layar terlebih dahulu untuk mengatur nilai dengan benar.
Display display = context.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
int screen_height = outMetrics.heightPixels;
int screen_width = outMetrics.widthPixels;
Setelah Anda mendapatkan dimensi layar, Anda dapat mengatur lebar & tinggi tampilan gambar menggunakan margin yang tepat.
view.getLayoutParams().height = screen_height - 140;
view.getLayoutParams().width = screen_width - 130 ;
Untuk mengatur ImageView dan Tinggi Secara Programatis, Anda dapat melakukannya
//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()
Dalam skenario di mana ukuran widget perlu diatur secara terprogram, pastikan aturan di bawah ini.
LayoutParam
untuk Tata Letak tempat Anda menambahkan tampilan itu . Dalam kasus saya saya menambahkan TableRow
jadi saya harus lakukanTableRow.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);
Jika Anda hanya ingin memasukkan gambar dalam tampilan gambar, Anda dapat menggunakan "wrap content" pada properti tinggi dan lebar dengan tipe skala tetapi jika Anda ingin mengatur secara manual Anda harus menggunakan LayoutParams.
Layoutparams efisien untuk mengatur tinggi dan lebar tata letak secara terprogram.
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);