を設定したいのですがLayoutParams
、ImageView
それを行う適切な方法を見つけることができないようです。
さまざまな の API のドキュメントしか見つかりViewGroups
ませんが、ImageView
. それでも、ImageView
この機能があるようです。
このコードは機能しません...
myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));
どうすればいいのですか?
ImageView が置かれている ViewGroup の LayoutParams を設定する必要があります。たとえば、ImageView が LinearLayout 内にある場合は、
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
これは、ビューに割り当てるサイズを知る必要があるのはビューの親であるためです。
古いスレッドですが、私は今同じ問題を抱えていました。誰かがこれに遭遇した場合、彼はおそらくこの答えを見つけるでしょう:
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);
既存の ImageView のレイアウトを変更する場合は、現在の LayoutParams を取得し、幅/高さを変更して元に戻すだけで済みます。
android.view.ViewGroup.LayoutParams layoutParams = myImageView.getLayoutParams();
layoutParams.width = 30;
layoutParams.height = 30;
myImageView.setLayoutParams(layoutParams);
それがあなたの目標かどうかはわかりませんが、そうであれば、これがおそらく最も簡単な解決策です。
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);