Làm cách nào tôi có thể đặt ImageView
chiều rộng và chiều cao của chương trình?
Làm cách nào tôi có thể đặt ImageView
chiều rộng và chiều cao của chương trình?
Câu trả lời:
Có thể đã quá muộn nhưng vì lợi ích của những người khác có cùng vấn đề, hãy đặt chiều cao của ImageView:
imageView.getLayoutParams().height = 20;
Hi vọng điêu nay co ich.
Quan trọng. Nếu bạn đang đặt chiều cao sau khi bố cục đã được 'bố trí', hãy đảm bảo bạn cũng gọi:
imageView.requestLayout();
image_view.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT
.. Nếu khung nhìn cha mẹ được LinearLayout
thay thế RelativeLayout
bằng nó
Nếu chế độ xem hình ảnh của bạn là động, câu trả lời có chứa getLayout sẽ không thành công với ngoại lệ null.
Trong trường hợp đó, cách chính xác là:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
ImageView
biến mất. Bí quyết là làm cho phần bố cục (nghĩa là <this_part_here>.LayoutParams
) giống với phần cha mẹ của ImageView
nó. Vì vậy, ví dụ, nếu bạn đặt bạn ImageView
trong TableRow
vòng một TableLayout
, bạn nên có nó như TableRow.LayoutParams
.
Cách đơn giản này để thực hiện nhiệm vụ của bạn:
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);
và một cách khác nếu bạn muốn cung cấp kích thước màn hình theo chiều cao và chiều rộng thì hãy sử dụng mã bên dưới:
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);
Hy vọng sử dụng đầy đủ cho bạn.
int
các biến nếu chúng sẽ không được sử dụng lại ở nơi khác? Có vẻ không cần thiết nhưng tôi không biết nhiều về nó.
Tôi đã chơi cái này với pixel
và dp
.
private int dimensionInPixel = 200;
Cách đặt theo pixel :
view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();
Cách đặt bởi dp :
int dimensionInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dimensionInPixel, getResources().getDisplayMetrics());
view.getLayoutParams().height = dimensionInDp;
view.getLayoutParams().width = dimensionInDp;
view.requestLayout();
Hy vọng điều này sẽ giúp bạn.
Nếu bạn cần đặt chiều rộng hoặc chiều cao của mình thành match_parent
(lớn như cha mẹ của nó) hoặc wrap_content
(đủ lớn để phù hợp với nội dung bên trong của chính nó), thì ViewGroup.LayoutParams
có hai hằng số này:
imageView.setLayoutParams(
new ViewGroup.LayoutParams(
// or ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT,
// or ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT ) );
Hoặc bạn có thể đặt chúng như trong câu trả lời của Hakem Zaied :
imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...
Bạn có thể đặt giá trị cho tất cả các trường hợp.
demoImage.getLayoutParams().height = 150;
demoImage.getLayoutParams().width = 150;
demoImage.setScaleType(ImageView.ScaleType.FIT_XY);
Cách tốt nhất và dễ nhất để thiết lập nút động là
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());
Chiều cao và chiều rộng trên được tính bằng pixel px . 45 là chiều cao tính bằng dp và 42 là chiều rộng tính bằng dp .
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
Vì vậy, ví dụ: nếu bạn đã đặt nút của mình trong TableRow trong TableLayout, bạn nên đặt nó dưới dạng TableRow.LayoutParams
index.setLayoutParams(new TableRow.LayoutParams(width, height));
Chỉ cần tạo một đối tượng LayoutParams và gán nó cho imageView của bạn
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
image_view.getLayoutParams().height
trả về giá trị chiều cao tính bằng pixel. Bạn cần lấy kích thước màn hình trước để đặt giá trị đúng.
Display display = context.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
int screen_height = outMetrics.heightPixels;
int screen_width = outMetrics.widthPixels;
Sau khi bạn có được kích thước màn hình, bạn có thể đặt chiều rộng và chiều cao của hình ảnh bằng cách sử dụng lề thích hợp.
view.getLayoutParams().height = screen_height - 140;
view.getLayoutParams().width = screen_width - 130 ;
Để đặt ImageView và Chiều cao theo lập trình, bạn có thể làm
//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()
Trong trường hợp kích thước widget cần được đặt theo chương trình, đảm bảo các quy tắc dưới đây.
LayoutParam
cho Bố cục mà bạn đang thêm chế độ xem đó . Trong trường hợp của tôi, tôi đang thêm vào TableRow
vì vậy tôi phải làmTableRow.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);
Nếu bạn muốn vừa với hình ảnh trong chế độ xem hình ảnh, bạn có thể sử dụng "bọc nội dung" trong thuộc tính chiều cao và chiều rộng với loại tỷ lệ nhưng nếu bạn muốn đặt thủ công, bạn phải sử dụng LayoutParams.
Bố cục là hiệu quả để thiết lập chiều cao và chiều rộng bố trí theo chương trình.
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);