24

この簡単な方法でプログラムでウィジェットを作成しています

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

getLayoutParamsがnullを返すため、NullPointer例外が発生します。何故ですか?

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

Kotlin Answer

この理由は、(おそらく)作成したばかりで、まだ画面にレンダリングしていないためです。幸い、自分で設定できます

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 に答える