web-dev-qa-db-ja.com

ImageViewのサイズをどのように変更しますか?

ImageViewを次のように設定しました。

    <ImageView Android:id="@+id/dl_image"
               Android:layout_width="60dp"
               Android:background="@drawable/pictureframe"
               Android:layout_height="wrap_content"
               Android:layout_marginRight="10dp"
               Android:layout_alignParentLeft="true"
               Android:layout_centerVertical="true"
               Android:adjustViewBounds="true"
               Android:scaleType="fitCenter"/>

Layout_widthが60dpに固定されていることに注意してください。オンラインで取得したコンテンツに応じて、この幅を90 dpまたは120 dpに変更します(画像のアスペクト比を維持します)。

SetLayoutParamsを使用しようとしましたが、LayoutParams(120、LayoutParams.WRAP_CONTENT)を渡すと例外がスローされます。気に入らないようです。

可能であれば、大きなサイズ用に別のImageViewを作成しないようにしています。

17
atedja

既存のビューで作業している場合、LayoutParamsの新しいセットを最初から作成するのは大変な作業になる可能性があります。代わりに、ビューの既存のLayoutParamを取得して編集し、ビューに適用して、setLayoutParams()を使用してLayoutParamを更新できます。

ImageView imageView = findViewById(R.id.dl_image);
LayoutParams params = (LayoutParams) imageView.getLayoutParams();
params.width = 120;
// existing height is ok as is, no need to edit it
imageView.setLayoutParams(params);

正しいタイプのLayoutParamsをインポートしてください。この場合、コメントしたように、LayoutParamsViewGroupを使用できます。特定のタイプのビューに固有のパラメーター(RelativeLayoutsの配置など)を設定している場合は、そのタイプのビューのLayoutParamsをインポートする必要があります。

39
Peter Ajtai

あなたはそれをすべて同じように行うことができます

ImageView imageView = findViewById(R.id.dl_image);
imageView.getLayoutParams().width = 120;
6
tibbi