调整ImageView中图像的宽度以匹配父容器,并根据纵横比调整高度。

7

我在xml中有一个ImageView -

<ImageView
    android:id="@+id/image"
    android:layout_centerHorizontal="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"                     
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"/>

我正在使用Glide库从URL获取图片并将其设置到ImageView中。
我想要的是将图像的宽度与父容器的宽度匹配,然后调整图像的高度而不影响其宽高比。
如果图像尺寸非常小,则应扩展以匹配父容器的宽度;如果图像尺寸大于屏幕尺寸,则应缩小以匹配父容器的宽度。
ImageView img = (ImageView) findViewById("image");
Glide.with(this).load("url here").into(img);

我应该使用哪种scaleType?
这是在XML中还是需要Java代码实现?

谢谢您的帮助。:)

4个回答

11

这可以从XML中实现。我使用以下代码实现了它。

        <ImageView
        android:id="@+id/ivImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"/>

使用FILL进行XY缩放图像,并使用adjust view bounds保留纵横比。我认为您不需要center horizontal属性。

之后,我调用了一个照片加载库,将图像下载到图像视图中。


5

它对我有帮助。只需在imageView xml中使用即可。

android:adjustViewBounds="true"

在 Glide 中添加 override:

 GlideApp.with(context)
            .load(url)
            .override(Resources.getSystem().getDisplayMetrics().widthPixels)
            .into(imageView)

2

使用android:scaleType:fitXY属性

<ImageView
android:id="@+id/image"
android:layout_centerHorizontal="true"
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_height="wrap_content"                     
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>

和Java代码

Glide.with(this).load(url)
                .crossFade()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(img);

0

您可以使用ConstraintLayout来实现此目的。

如果至少有一个视图维度设置为“匹配约束”(0dp),则可以将视图大小设置为16:9等比例。

引用自Android开发者。您还可以参考这篇中等文章,了解如何实现此比例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接