Установите ImageView (и его src) на ширину макета и сделайте его пропорциональную высоту

Можете ли вы помочь мне настроить мой макет? Я не достигаю того, что я ищу:

Я поместил фон imageview в красный цвет, чтобы объяснить, что я хочу:

Ширина изображения меньше ширины макета. Я хотел бы, чтобы изображение увеличивалось пропорционально, сохраняя его соотношение сторон, пока не достигнет аспекта на первом изображении (я изменил его вручную с помощью фотошопа), но при установке width = "fill_parent" результатом является второе изображение и установка ширины и высоты на "fill_parent" результат - это третье изображение.

Я попытался объединить с ScaleType без успеха

Как я могу получить первый вариант? Благодаря

enter image description here

Ответ 1

Используйте android:adjustViewBounds=true attr в xml для ImageView


Этот вопрос решается здесь, расширяя класс ImageView.

Android ImageView, регулирующий высоту и ширину установки родителя


Я создал образец. Меня устраивает. Вот файл макета xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView android:src="@drawable/hydrangeas"
        android:layout_height="wrap_content" android:id="@+id/imageView1"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        android:background="@android:color/white"
        android:layout_width="wrap_content"/>

</LinearLayout>

Он работает и для fitCenter. Посмотрите на снимок.
With centerInside and adjustViewBounds="true"

Ответ 2

Используйте атрибут fit_center в свой тег ImageView.

<ImageView ... android:scaleType="fitCenter" .. />