ImageView getLayoutParams()返回null

问题描述 投票:23回答:2

我正在使用此简单方法通过程序创建窗口小部件

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

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

android android-imageview
2个回答
53
投票

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

[如果您要将图像的高度设置为50,则可以考虑设置此视图的layoutParams...。您可以将layoutParams的高度设置为50。这样它就可以完成您想要的工作。

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

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


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更改为要添加到的任何布局。

© www.soinside.com 2019 - 2024. All rights reserved.