Android Glide:防止请求失败时出现白色图片。

12

我想知道是否可以防止Glide在ImageView中加载白色(空)图像,如果提供的URL错误。 如果找不到图像(因为可能由于用户输入而出错),我想保留XML中提供的图像。

我尝试在监听器中返回true,但我想那只是用于处理动画。 非常感谢!

 public static void loadImage(String url, Context c, ImageView target) {
    Glide.with(c).load(url).listener(new RequestListener<String, GlideDrawable>() {
        @Override
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
            e.printStackTrace();
            return true;
        }

        @Override
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
            return false;
        }
    }).into(target);
}
3个回答

23

您可以使用.error(mDefaultBackground),在加载失败时设置要显示的Drawable来保留图像。就像下面这样:

Drawable mDefaultBackground = getResources().getDrawable(R.drawable.default_background);

Glide.with(getActivity())
                .load(uri)
                .centerCrop()
                .error(mDefaultBackground).into(target);

来自文档


这对我很有帮助,我只是调整了静态函数以从ImageView获取当前的可绘制对象,因此我不必手动加载它并跟踪实际的可绘制对象是什么。谢谢! - Leo Starić
4
可以直接使用资源 ID 而不是创建 Drawable:.error(R.drawable.ic_error_placeholder_24dp) - Kirill Karmazin
挽救了我的一天。没有多余的话,也没有少说什么。 - Ezequiel Adrian

2
最新版本的Glide设置错误图片的语法如下所示:

对于较新版本的Glide,设置错误图片的语法如下:

Glide.with(mContext)
     .load(url)
     .error(Glide.with(imgView).load(R.drawable.ic_image_when_url_fails))
     .into(imgView);

Glide库的哪个版本? - Ferer Atlus

0

2020 年最简单且完美运作的方法是:

Glide.with(context)
      .load(image)
      .error(R.drawable.error_img) //in case of error this is displayed
      .into(imageView);

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