Как изменить размер 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 для больших размеров.
Ответы
Ответ 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;