我想设置LayoutParams
一个,ImageView
但似乎找不到正确的方法。
我只能在API中找到有关各种文档ViewGroups
,但不能找到ImageView
。但是ImageView
似乎具有此功能。
该代码不起作用...
myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));
我该怎么做?
Answers:
您需要设置ImageView所在的ViewGroup的LayoutParams。例如,如果您的ImageView在LinearLayout内,则创建一个
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
这是因为它是View的父级,需要知道要分配给View的大小。
TypedValue.applyDimension(TypedValue.ComplexUnit_DP, 30, getResources().getDisplayMetrics())
旧线程,但我现在有同样的问题。如果有人遇到此问题,他可能会找到以下答案:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
仅当将ImageView作为子视图添加到LinearLayout时,此方法才有效。如果将其添加到RelativeLayout中,则需要调用:
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
如果要更改现有ImageView的布局,则应该能够简单地获取当前的LayoutParams,更改宽度/高度,然后再将其设置回:
android.view.ViewGroup.LayoutParams layoutParams = myImageView.getLayoutParams();
layoutParams.width = 30;
layoutParams.height = 30;
myImageView.setLayoutParams(layoutParams);
我不知道这是否是您的目标,但如果是,那可能是最简单的解决方案。
myImageView.setLayoutParams(layoutParams);
?由于您修改了对LayoutParams的引用,因此不应这样做。
ImageView从使用ViewGroup.LayoutParams的View获取setLayoutParams。如果使用它,在大多数情况下它将崩溃,因此您应该使用View.class中的getLayoutParams()。这将继承ImageView的父视图,并将始终运行。您可以在此处确认:ImageView扩展视图
假设您将ImageView定义为“ image_view ”,并将width / height int定义为“ thumb_size”
最好的方法是:
ViewGroup.LayoutParams iv_params_b = image_view.getLayoutParams();
iv_params_b.height = thumb_size;
iv_params_b.width = thumb_size;
image_view.setLayoutParams(iv_params_b);