Часто спрашивают, но никогда не отвечают (по крайней мере, в воспроизводимой форме).
У меня есть представление изображения с изображением, которое меньше, чем представление. Я хочу масштабировать изображение по ширине экрана и настроить высоту ImageView, чтобы отразить пропорционально правильную высоту изображения.
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
В результате изображение будет центрировано в исходном размере (меньше ширины экрана) с полями по бокам. Не хорошо.
Я добавил
android:adjustViewBounds="true"
Тот же эффект, ничего хорошего. я добавил
android:scaleType="centerInside"
Тот же эффект, ничего хорошего. Я перешел centerInside
на fitCenter
. Тот же эффект, ничего хорошего. Я перешел centerInside
на centerCrop
.
android:scaleType="centerCrop"
Теперь, наконец, изображение масштабируется по ширине экрана, но обрезается сверху и снизу! Я перешел centerCrop
на fitXY
.
android:scaleType="fitXY"
Теперь изображение масштабируется по ширине экрана, но не масштабируется по оси Y, что приводит к искажению изображения.
Удаление не android:adjustViewBounds="true"
имеет никакого эффекта. Добавление android:layout_gravity
, как предлагалось в другом месте, снова не имеет никакого эффекта.
Я пробовал другие комбинации - безрезультатно. Итак, пожалуйста, кто-нибудь знает:
Как настроить XML ImageView для заполнения ширины экрана, масштабирования меньшего изображения для заполнения всего вида, отображения изображения с его соотношением сторон без искажения или обрезки?
РЕДАКТИРОВАТЬ: Я также попытался установить произвольную числовую высоту. Это влияет только на centerCrop
настройку. Изображение будет искажено по вертикали в соответствии с высотой обзора.
android:scaleType="fitCenter"
?