Android 图像以正确的高度填充可用宽度
Android images to fill available width with correct height
我正在尝试创建一个回收站视图项目来显示多行多张图片 side-by-side:
- [图1][图2][图3]
- [图4][图5][图6]
- [图7][图8][图9]
我想避免设置任何宽度或高度,因为我希望图像缩放以填充屏幕的可用宽度。我正在尝试使用纯 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
,否则不需要。
我正在尝试创建一个回收站视图项目来显示多行多张图片 side-by-side:
- [图1][图2][图3]
- [图4][图5][图6]
- [图7][图8][图9]
我想避免设置任何宽度或高度,因为我希望图像缩放以填充屏幕的可用宽度。我正在尝试使用纯 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
,否则不需要。