Glide无法加载真实图片,仅显示占位符并停留在此状态

62

我有一行非常基本的从服务器加载图片的代码:

Glide.with(view.getContext()).load(url).placeholder(R.drawable.default_profile).into(view);

出现这种情况的原因是我一直卡在了占位符被显示而不是真实图像上!

我已经确认传递的 URL 是有效且可用的。如果我不使用占位符,相同的代码可以正常工作。

Glide.with(view.getContext()).load(url).into(view);

有什么想法吗?


4
出于安全考虑,Android 不允许访问某些 URL。需要在清单文件中添加 android:usesCleartextTraffic="true"。更详细的解答请参考这里 - TeachMeJava
16个回答

1
请不要在 Glide 中使用过渡或动画,这将解决您的问题。
代码:
Glide.with(context)
    .load(horizontalHappyHourList.get(position).getImage())
//  .transition(DrawableTransitionOptions.withCrossFade(400)) //Optional
    .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.RESOURCE)
    .error(R.drawable.no_image))
    .into(holder.imageView);

1

可能会对某些人有所帮助 :) 我的问题是网络安全策略例外。由于安全策略,Glide请求的URL被Android阻止。

通过将所需域名列入白名单来解决。 在这里检查

com.bumptech.glide.load.engine.GlideException: Failed to load resource
There was 1 cause:
java.net.UnknownServiceException(CLEARTEXT communication to maps.googleapis.com not permitted by the network security policy)
 call GlideException#logRootCauses(String) for more detail

最困难的是它没有显示在普通日志中。

0
在我的情况下,我在xml中设置了layout_height属性时遇到了问题。
<ImageView
        android:id="@+id/image_view_image"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@id/linear_layout_content"
        app:layout_constraintDimensionRatio="16:9"
        app:layout_constraintLeft_toLeftOf="@id/linear_layout_content"
        app:layout_constraintRight_toRightOf="@id/linear_layout_content"
        app:layout_constraintTop_toTopOf="@id/linear_layout_content" />

Glide在logcat中给出了一行警告,我不记得是什么了,但它建议避免使用wrap_content来设置宽度和高度。

所以我所做的就是修改布局,避免使用wrap_content,问题就解决了。

我试图重现那个问题,在问题被解决后获取警告行,但我无法重现。这似乎是库中的缓存问题。


0
请确保检查URL(链接),因为它可能是页面链接而不是精确的图像地址,尝试复制链接并将其粘贴到浏览器中,以查看它是否只打开图像或网页,如果它打开了一个网页,那么毫无疑问这就是问题所在,它是一个页面链接,而不是图像地址。

这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审阅 - A S M Sayem

0
如果以上方法都无法解决问题,而你正在设置 ImageView 的 'src' 属性,那么它是不起作用的。我曾经错误地在 xml 中设置了 ImageView 的 'src',将其删除后问题得到了解决。

-3

只需卸载应用程序并重新安装即可。它会正常工作。


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