web-dev-qa-db-ja.com

ImageViewのLayoutParams()をどのように設定しますか?

LayoutParamsImageViewを設定したいのですが、適切な方法を見つけられないようです。

APIにはさまざまなViewGroupsのドキュメントしかありませんが、ImageViewはありません。しかし、ImageViewにはこの機能があるようです。

このコードは機能しません...

myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));

どうすればいいのですか?

71
DeadTime

ImageViewが置かれているViewGroupのLayoutParamsを設定する必要があります。たとえば、ImageViewがLinearLayout内にある場合、

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);

これは、Viewに割り当てるサイズを知る必要があるのはViewの親だからです。

161
Steve Haley

古いスレッドですが、同じ問題が発生しました。誰かがこれに遭遇した場合、彼はおそらくこの答えを見つけるでしょう:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);

これは、ImageViewをsubViewとしてLinearLayoutに追加した場合にのみ機能します。 RelativeLayoutに追加する場合、以下を呼び出す必要があります。

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
18
Bogdan

既存のImageViewのレイアウトを変更する場合、現在のLayoutParamsを取得し、幅/高さを変更して、元に戻すことができるはずです。

Android.view.ViewGroup.LayoutParams layoutParams = myImageView.getLayoutParams();
layoutParams.width = 30;
layoutParams.height = 30;
myImageView.setLayoutParams(layoutParams);

それがあなたの目標かどうかはわかりませんが、もしそうなら、おそらくこれが最も簡単な解決策です。

11
Karl Giesing

ImageViewは、ViewGroup.LayoutParamsを使用するViewからsetLayoutParamsを取得します。それを使用すると、ほとんどの場合クラッシュしますので、View.classにあるgetLayoutParams()を使用する必要があります。これは、ImageViewの親ビューを継承し、常に機能します。これはここで確認できます: ImageView extends view

ImageViewが 'image_view'として定義され、width/height intが 'thumb_size'

これを行う最良の方法

ViewGroup.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);
6
Codeversed