80

を設定したいのですがLayoutParamsImageViewそれを行う適切な方法を見つけることができないようです。

さまざまな の API のドキュメントしか見つかりViewGroupsませんが、ImageView. それでも、ImageViewこの機能があるようです。

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

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

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

4

4 に答える 4

169

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

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

これは、ビューに割り当てるサイズを知る必要があるのはビューの親であるためです。

于 2010-06-03T12:18:51.993 に答える
19

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

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

これは、ImageView をサブビューとして LinearLayout に追加した場合にのみ機能します。それを RelativeLayout に追加する場合は、次を呼び出す必要があります。

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
于 2012-05-21T15:10:10.940 に答える
13

既存の ImageView のレイアウトを変更する場合は、現在の LayoutParams を取得し、幅/高さを変更して元に戻すだけで済みます。

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

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

于 2013-01-17T00:06:42.303 に答える
6

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

'image_view'として定義されたImageViewと' thumb_size 'として定義されたwidth/ heightintがあると仮定します

これを行うための最良の方法

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);
于 2013-02-20T18:22:15.780 に答える