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

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

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


当前回答

你不需要任何java代码。你只需要:

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop" />

键在width和height的匹配父项中

其他回答

对于你们中的任何人,想要图像精确地适应imageview适当缩放,不裁剪使用

imageView.setScaleType(ScaleType.FIT_XY);

imageView是代表你的imageView的视图

我有一个算法缩放位图,以最适合容器的尺寸,保持其纵横比。请在这里找到我的解决方案

希望这能帮助到路上的人!

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

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

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

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

这是它在ConstraintLayout中为我工作的方式:

<ImageView
    android:id="@+id/myImg"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true"/>

然后在代码中,我设置drawable为:

ImageView imgView = findViewById(R.id.myImg);
imgView.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.image_to_show, null));

这很好地符合图像的长宽比,并保持它在中心。