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);
これは、Viewに割り当てるサイズを知る必要があるのはViewの親だからです。
古いスレッドですが、同じ問題が発生しました。誰かがこれに遭遇した場合、彼はおそらくこの答えを見つけるでしょう:
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);
既存の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 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);