在Android中,我定义了一个ImageView的layout_width为fill_parent(它占用了手机的全宽度)。

如果我放入ImageView的图像大于layout_width, Android会缩放?那么高度呢?当Android缩放图像时,它会保持纵横比吗?

我发现在ImageView的顶部和底部有一些空白当Android缩放一个比ImageView大的图像时。这是真的吗?如果是,我如何消除空白?


当前回答

使用android:layout_gravity for ImageView:

android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1"

上面的例子对我很有用。

其他回答

看一下ImageView。ScaleType来控制和理解在ImageView中发生大小调整的方式。当图像被调整大小时(同时保持其纵横比),图像的高度或宽度可能会小于ImageView的维度。

如果你想让你的图像占据尽可能大的空间,那么最好的选择是

android:layout_weight="1"
android:scaleType="fitCenter"

如果图像质量在以下情况下下降: 使用

android:adjustViewBounds="true"

而不是

android:adjustViewBounds="true"
android:scaleType="fitXY"

这解决了我的问题

android:adjustViewBounds="true"
android:scaleType="fitXY"

当以编程方式执行此操作时,请确保以正确的顺序调用setter:

imageView.setAdjustViewBounds(true)
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP)