为什么Glide无法将资源ID的图片加载到我的ImageView上?

11

我已经拥有了我所需的应用程序所有图像,并且正在尝试加快速度并使其流畅,因此我一直在使用Glide来加载这些图像。虽然在应用程序的其他区域中它能够正常工作,但是在我的viewpager中却不行。

在我的片段中,我正在尝试加载图像,如下所示:

Glide.with(this).load(R.drawable.my_drawable).into(myImageView);

什么都没有发生或出现,而且我从Glide那里没有收到任何异常或任何类型的错误消息。


在Fragment中,你不能传递"this",而应该传递"getActivity()"。 - Wajid
4个回答

14

我知道这个问题已经很久以前关闭了,但是我发现一种很好的解决方法,即使用占位符或错误图像代替。因此你可以尝试这样做。

Glide.with(<<MyActivity>>)
    .load("")
    .placeholder(<<myDrawable>>)
    .into(imageView);

我不确定这是否符合您的要求,但如果其他人有相同的问题,至少这个方法似乎只需做最少量的工作即可解决。:)


为了从警告对话框的资源ID中加载图片,我已经挣扎了1个小时。最终使用了占位符解决了问题。 - Madhu
1
.placeholder() 已经被弃用,请使用 Glide.with(activity).load("").apply(RequestOptions().placeholder(resourceId)).into(imageView) 代替。 - Joonsoo

5
请查看Debugging and Error Handling维基页面以启用日志记录,从而检测加载失败的原因。
如果没有错误日志,可能是由于您的视图没有大小,可能是因为其大小为0,或者因为它还没有通过布局(可见性设置为View.GONE等)。如果是这样,您可以通过添加调用override()来测试任何有效的宽度和高度(尝试400, 400或其他值进行测试)。
如果调用override()可以解决问题,请查看您的xml并尝试更改视图,使其具有固定大小,或者最终至少具有有效大小。如果所有其他方法都失败了,您始终可以调用override(),将宽度和高度设置为Target.SIZE_ORIGINAL

1

Tobias Reich的方法 生成了一堆警告日志,因为加载的URL为空。如果你不想看到警告日志,

试试这个:

int drawableIdentifier = activity.getResources().getIdentifier("my_drawable_image_name", "drawable", activity.getPackageName());
Glide.with(activity)
     .load(drawableIdentifier)
     .into(imageView);

0
如果您正在使用Vector或SVG,您的Glide版本可能不支持此功能并且无法加载。

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