Hak*_*ied 1044

可能为时已晚,但为了遇到同样问题的其他人,要设置ImageView的高度:

image_view.getLayoutParams().height = 20;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

重要.如果您在布局已经"布局"后设置高度,请确保同时调用:

image_view.requestLayout()
Run Code Online (Sandbox Code Playgroud)

  • 如果您在布局已经"布局"后设置高度,请确保调用image_view.requestLayout() (97认同)
  • 那么,如何指定**单位**?怎么说它是**dp**,而不是**sp**等 (29认同)
  • 如果我需要wrap_content怎么办? (9认同)
  • 投票,因为有一天你是我的老板,我还在向你学习哈基姆:) (8认同)
  • @FranciscoCorralesMorales将它用于wrap_content`mage_view.getLayoutParams().height = RelativeLayout.LayoutParams.WRAP_CONTENT` ..如果视图父级是`LinearLayout`用它替换`RelativeLayout` (7认同)
  • @SaeedNeamati,这是**px**.例如,在http://stackoverflow.com/questions/4605527/converting-pixels-to-dp中将dp转换为px使用方法. (4认同)

Inv*_*oft 224

如果您的图像视图是动态的,则包含getLayout的答案将失败并显示null异常.

在这种情况下,正确的方法是:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)

  • 如果我把那个代码我的图像消失了.为什么?ImageView imgLogo = new ImageView(this); imgLogo.setImageDrawable(标识); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(32,32); imgLogo.setLayoutParams(的LayoutParams); row.addView(imgLogo); (7认同)
  • 谢谢你的回答,让我走上正轨.作为补充说明,应将LinearLayout设置为图像的父视图类型.例如,如果您的图片视图位于图库中,则应使用Gallery布局参数而不是LinearLayout,否则您将拥有强制转换例外. (3认同)
  • @MustafaGüven我遇到了和你一样的问题,我的`ImageView`消失了.诀窍是使布局部分(即`<this_part_here> .LayoutParams`)与`ImageView`的父级相同.因此,例如,如果你将`ImageView`放在`TableLay`中的`TableRow`中,你应该将它作为`TableRow.LayoutParams`. (3认同)

dug*_*ggu 48

这个简单的方法来完成你的任务:

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);
Run Code Online (Sandbox Code Playgroud)

另一种方法,如果你想给出屏幕尺寸的高度和宽度,那么使用下面的代码:

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);
Run Code Online (Sandbox Code Playgroud)

希望充分利用你.


Hir*_*tel 34

我用pixel和玩过这个dp.

private int dimensionInPixel = 200;
Run Code Online (Sandbox Code Playgroud)

如何按像素设置:

view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();
Run Code Online (Sandbox Code Playgroud)

如何通过dp设置:

int dimensionInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dimensionInPixel, getResources().getDisplayMetrics());
view.getLayoutParams().height = dimensionInDp;
view.getLayoutParams().width = dimensionInDp;
view.requestLayout();
Run Code Online (Sandbox Code Playgroud)

希望这会对你有所帮助.

  • 对于特定的 dp 值(即不从 px 转换为 dp),我将如何执行此操作? (2认同)

Oma*_*mar 14

如果您需要将宽度或高度设置为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 ) );
Run Code Online (Sandbox Code Playgroud)

或者你可以像在Hakem Zaied的回答中那样设置它们:

imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...
Run Code Online (Sandbox Code Playgroud)


小智 10

您可以为所有案例设置值.

demoImage.getLayoutParams().height = 150;

demoImage.getLayoutParams().width = 150;

demoImage.setScaleType(ImageView.ScaleType.FIT_XY);
Run Code Online (Sandbox Code Playgroud)

  • 引起:java.lang.NullPointerException:尝试写入空对象引用上的字段“int android.view.ViewGroup$LayoutParams.height” (4认同)

Ali*_*oot 8

动态设置按钮的最佳和最简单的方法是

 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());
Run Code Online (Sandbox Code Playgroud)

上述高度和宽度以像素为单位px.45是dp的高度,42是dp的宽度.

 index.setLayoutParams(new <Parent>.LayoutParams(width, height));
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果您将按钮放在TableLayout中的TableRow中,则应将其设置为TableRow.LayoutParams

 index.setLayoutParams(new TableRow.LayoutParams(width, height));
Run Code Online (Sandbox Code Playgroud)


Zub*_*ber 7

只需创建一个LayoutParams对象并将其分配给您的imageView

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)


Ali*_*ani 6

image.setLayoutParams(new ViewGroup.LayoutParams(宽度, 高度));

例子:

image.setLayoutParams(new ViewGroup.LayoutParams(150, 150));
Run Code Online (Sandbox Code Playgroud)


Vik*_*kas 5

image_view.getLayoutParams().height 
Run Code Online (Sandbox Code Playgroud)

返回以像素为单位的高度值。您需要先获取屏幕尺寸才能正确设置值。

 Display display = context.getWindowManager().getDefaultDisplay();
 DisplayMetrics outMetrics = new DisplayMetrics();
 display.getMetrics(outMetrics);
 int screen_height = outMetrics.heightPixels;
 int screen_width = outMetrics.widthPixels;
Run Code Online (Sandbox Code Playgroud)

获得屏幕尺寸后,可以使用适当的边距设置imageview的宽度和高度。

 view.getLayoutParams().height = screen_height - 140;
 view.getLayoutParams().width = screen_width - 130 ;
Run Code Online (Sandbox Code Playgroud)