Подтвердить что ты не робот

Как изменить размер 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. В зависимости от содержимого, которое я приобрел в Интернете, я хочу изменить его ширину до 90dp или 120dp (сохраняя соотношение сторон изображения).

Я попытался использовать setLayoutParams, но передача LayoutParams (120, LayoutParams.WRAP_CONTENT) вызывает исключение. Кажется, ему это не нравится.

Если возможно, я пытаюсь избежать создания другого ImageView для больших размеров.

4b9b3361

Ответ 1

Если вы работаете с существующим представлением, может быть много работы, создавая новый набор LayoutParams с нуля. Вместо этого вы можете захватить представление существующих LayoutParams, отредактировать их и применить к представлению для обновления своих LayoutParams с помощью 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. Если вы задавали параметры, специфичные для определенного типа представления (например, выравнивания в RelativeLayout s), вам пришлось бы импортировать LayoutParams этого типа представления.

Ответ 2

вы можете сделать все это как

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