Android 图像以正确的高度填充可用宽度

Android images to fill available width with correct height

我正在尝试创建一个回收站视图项目来显示多行多张图片 side-by-side:

我想避免设置任何宽度或高度,因为我希望图像缩放以填充屏幕的可用宽度。我正在尝试使用纯 Android 布局 XML 来做到这一点(即,如果可能的话,宁愿不以编程方式进行)并希望避免设置固定高度。但是我找不到任何适用的高度设置来实现这一点。

我发现 Stack Overflow 主题总是倾向于建议 layout_weight,'almost works' 因为图像确实填充了可用宽度,但是包装器的高度太大了,它仍然是原始图像的高度。

看下图,蓝线表示容器的高度,造成很多无意的现象margin/padding.

是否可以修改以下内容以 trim 包装纸的高度以更准确地适合图像?

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/card_1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/card_ha" />

        <ImageView
            android:id="@+id/card_2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/card_ha" />

        <ImageView
            android:id="@+id/card_3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/card_ha" />
    </LinearLayout>
</layout>

你试过了吗adjustViewBounds

看,根据 official documentation 和我的使用经验,adJustViewBounds 从 xml 开始调整 ImageView's bounds/borders与 image/drawable 的比率,如下图所示。

因此,如果您已将 width 设置为 0dp 并将 height 设置为 wrap_content,则 ImageView 的大小将根据纵横比进行调整.

要做到这一点: 在所有 ImageViews 标签中添加 android:adjustViewBounds="true"。您不必以编程方式或在 xml.

中执行任何其他操作

此外,如果您想添加更多行图像,我建议使用 GridView,否则不需要。