You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Glide拉伸图片以适配ImageView的实现方法

解决Glide加载图片铺满ImageView且完整显示的问题

嗨,这个问题我之前也碰到过,核心就是要实现和设置background一样的效果——拉伸铺满整个ImageView,同时不裁剪、完整显示图片,下面给你两种实用的解决方案:

方案一:利用ImageView的ScaleType(最简单直接)

这是最贴近你需求的方法,原理和设置background完全一致:

  1. 在XML中配置ImageView的拉伸属性
    给你的ImageView添加android:scaleType="fitXY",这个属性会强制图片拉伸至匹配ImageView的宽高,完全铺满且不会裁剪任何部分:
<ImageView
    android:id="@+id/target_image_view"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:scaleType="fitXY" />
  1. 用Glide正常加载图片
    不需要额外的变换设置,直接加载即可,ImageView的fitXY会自动处理拉伸逻辑:
// Java示例
Glide.with(this)
     .load("你的图片URL/本地路径")
     .into(target_image_view);
// Kotlin示例
Glide.with(this)
     .load("你的图片URL/本地路径")
     .into(target_image_view)

方案二:自定义Glide Transformation(更灵活)

如果不想修改ImageView的默认ScaleType,或者需要更定制化的拉伸逻辑,可以自定义一个变换类来实现:

  1. 创建拉伸变换类
    这个类会将图片直接拉伸至目标ImageView的尺寸:
public class StretchTransformation extends BitmapTransformation {
    private int targetWidth;
    private int targetHeight;

    public StretchTransformation(int targetWidth, int targetHeight) {
        this.targetWidth = targetWidth;
        this.targetHeight = targetHeight;
    }

    @Override
    protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
        // 直接将图片拉伸至目标尺寸
        return Bitmap.createScaledBitmap(toTransform, targetWidth, targetHeight, true);
    }

    @Override
    public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
        messageDigest.update(("stretch_" + targetWidth + "_" + targetHeight).getBytes(StandardCharsets.UTF_8));
    }
}
  1. 加载时应用自定义变换
    注意要确保View已经完成测量(避免拿到宽高为0的情况),所以用post()方法来触发加载:
// Java示例
target_image_view.post(() -> {
    int viewWidth = target_image_view.getWidth();
    int viewHeight = target_image_view.getHeight();
    Glide.with(this)
         .load("你的图片URL/本地路径")
         .transform(new StretchTransformation(viewWidth, viewHeight))
         .into(target_image_view);
});

小提醒

  • 方案一中的fitXY会改变图片原始比例,这和设置background的效果完全一致,如果你的图片和ImageView比例差异较大,会出现变形,这是符合你需求的正常现象。
  • 方案二中一定要在View布局完成后获取宽高,否则会导致拉伸失效。

内容的提问来源于stack exchange,提问作者Ashuthosh Patoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:26:39