拟合图像宽度以匹配父级,并根据ImageView中的宽高比调整高度

时间:2018-05-13 05:25:20

标签: android imageview

我的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库从网址获取图片并将其设置为ImageView。

我想要的是将图像的宽度与父宽度相匹配,然后在不影响宽高比的情况下调整图像的高度。

如果图像尺寸非常小,则应将其展开以匹配父宽度,如果图像尺寸大于屏幕尺寸,则应缩小以匹配父宽度。

ImageView img = (ImageView) findViewById("image");
Glide.with(this).load("url here").into(img);

我应该使用哪种scaleType?
是可能在XML中还是需要java代码?

提前致谢。 :)

4 个答案:

答案 0 :(得分:2)

这对我有帮助。只需在 imageView xml 中使用

android:adjustViewBounds="true"

并在滑行中添加覆盖:

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

答案 1 :(得分:1)

使用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);

答案 2 :(得分:1)

可以从xml中获取。我使用以下代码实现了它。

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

缩放XY使用FILL缩放图像,调整视图边界可保留纵横比。 我认为你不需要中心水平属性。

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

答案 3 :(得分:0)

您可以将ConstraintLayout用于此目的。

  

如果至少有一个视图尺寸设置为&#34;匹配约束&#34>,您可以将视图大小设置为16:9之比。 (0dp)

引自android developers。您也可以参考this medium article以获取有关如何实现此比例的参考。