我正在使用这个简单的方法以编程方式创建一个小部件
private ImageView getModuleIconView(Module module) {
ImageView view = new ImageView(context);
view.setImageResource(module.getIconResId());
view.getLayoutParams().height = 50; //NullPointerException
return view;
}
我得到NullPointer异常,因为getLayoutParams返回null。那是为什么?
答案 0 :(得分:49)
因为您的图像视图已播出,所以您没有将其放在屏幕上。所以它没有任何布局参数或任何大小。
如果你想将图像的高度设置为50,你可以考虑设置这个视图的layoutParams ...你可以将layoutParams的高度设置为50.所以它会做你想要的。
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 50));
img.setLayoutParams(lp);
这些行会将图像的高度设置为50,但不要忘记我假设您的父视图为线性布局,如果不是,那么您应该使用它的布局框架。
答案 1 :(得分:0)
这样做的原因(可能是)您刚刚创建了它,但尚未在屏幕上呈现它。幸运的是,您可以自己设置
val width = LayoutParams.WRAP_CONTENT // or LayoutParams.MATCH_PARENT
val height = (context.)resources.getDimension(R.dimen.my_size)
view.layoutParams = LinearLayout.LayoutParams(width, height)
确保将LinearLayout
更改为要添加到的布局。