我想设置一个ImageView
的LayoutParams
,但是似乎找不到正确的方法。
我只能在API文档中找到各种ViewGroups
的相关信息,而没有ImageView
的相关资料。然而,ImageView
似乎具有此功能。
这段代码不起作用...
myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));
我该如何做呢?
您需要设置ImageView所在的ViewGroup的LayoutParams。例如,如果您的ImageView位于LinearLayout内,则创建一个
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
这是因为需要知道为视图分配什么大小的是包含该视图的父级视图。
虽然这是一篇旧帖,但我现在也遇到了同样的问题。如果有人遇到了这个问题,可能会发现这个答案:
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 吗?由于您修改了 LayoutParams 的引用,因此不需要。 - VinceViewGroup.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);
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.checked, null);
preview.setImageDrawable(drawable);
ViewGroup.LayoutParams layoutParams = preview.getLayoutParams();
layoutParams.width = 100;
layoutParams.height = 98;
preview.setLayoutParams(layoutParams);
TypedValue.applyDimension(TypedValue.ComplexUnit_DP, 30, getResources().getDisplayMetrics())
这样的东西将像素转换为 DP。 - Steve Haley