24

我正在用这个简单的方法以编程方式创建一个小部件

private ImageView getModuleIconView(Module module) {
    ImageView view = new ImageView(context);
    view.setImageResource(module.getIconResId());        
    view.getLayoutParams().height = 50; //NullPointerException
    return view;
}

我得到 NullPointer 异常,因为 getLayoutParams 返回 null。这是为什么?

4

2 回答 2

59

因为您的 imageview 正在播放,所以您没有将其放在屏幕上。所以它没有任何布局参数或任何大小。

如果您想将图像的高度设置为 50,您可以考虑设置此视图的 layoutParams... 您可以将 layoutParams 的高度设置为 50。所以它会满足您的需求。

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 50));
 img.setLayoutParams(lp);

这些行会将您的图像高度设置为 50,但不要忘记我假设您的父视图为线性布局,如果不是,那么您应该使用它的 layoutparams。

于 2012-10-25T20:10:30.380 回答
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更改为您要添加的任何布局。

于 2020-03-17T06:33:53.907 回答