Часто спрашивали, никогда не отвечали (по крайней мере, не воспроизводимым образом).
У меня есть изображение с изображением меньше, чем представление. Я хочу масштабировать изображение по ширине экрана и отрегулировать высоту 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 для заполнения ширины экрана, масштабировать меньшее изображение, чтобы заполнить весь вид, отображая изображение с его форматным соотношением без искажений или обрезки?
EDIT: Я также попытался установить произвольную числовую высоту. Это влияет только на настройку centerCrop
. Он будет искажать изображение по вертикали в соответствии с высотой обзора.