Масштабирование изображения до максимальной доступной ширины, сохранение пропорций и исключение дополнительного пространства ImageView

У меня есть этот простой формат XML и файл green_square.png, который имеет 30X30 пикселей

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:background="@color/red"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:adjustViewBounds="true"
        android:scaleType="fitStart"
        android:src="@drawable/green_square"/>

</LinearLayout>

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

Я добавил красный фон в ImageView только для справки о дополнительном пространстве, которое я хочу избежать.

Вот моя цель

Ответы

Ответ 1

<ImageView
        android:id="@+id/game"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:adjustViewBounds="true"
        android:src="@drawable/ic_game" 
        />

это работает для меня. Полная ширина родительской и центральной обрезки, чтобы сохранить соотношение сторон

Ответ 2

На мой взгляд, этот макет ImageView является ошибкой. У меня было то же самое. В результате текст, который я хотел последовать за green_square, следовал за дополнительной компоновкой. Так что я сделал, это указать текст относительно нижней части экрана. Таким образом, текст перейдет к дополнительной компоновке. Я признаю, что это было не лучшее решение, но оно выглядит намного лучше, чем наличие огромного пространства между green_square и текстом.

Ответ 3

Это так просто. Просто сделайте ширину fill_parent и height wrap_content. Вот что я понял.

<ImageView
    android:id="@+id/game"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scaleType="centerCrop"
    android:adjustViewBounds="true"
    android:src="@drawable/ic_game" 
    />

Ответ 4

Используйте тип шкалы "fitCenter" или "fitxy"

Ответ 5

Попробуйте это,

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/red"
    android:scaleType="centerCrop"
    android:src="@drawable/green_square" />

</LinearLayout>