18

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に固定されていることに注意してください。オンラインで取得したコンテンツに応じて、この幅を90dpまたは120dpにサイズ変更したいと思います(画像のアスペクト比を維持したまま)。

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

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

4

2 に答える 2

43

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

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。この場合、コメントしたように、LayoutParamsのを使用できますViewGroup。特定のタイプのビュー(たとえば、RelativeLayoutsの配置)に固有のパラメーターを設定する場合は、そのタイプのビューのをインポートする必要がLayoutParamsあります。

于 2011-12-09T23:42:18.000 に答える
7

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

ImageView imageView = findViewById(R.id.dl_image);
imageView.getLayoutParams().width = 120;
于 2014-11-30T20:50:01.437 に答える