首页 > 解决方案 > 如何修复 RecyclerView 的 StaggeredGridLayoutManager 在滚动时分离内容并随机飞行

问题描述

我试图获取我拥有 API 的远程图像并将其显示在砌体网格(Pinterest 样式)中。

起初我使用的是简单的 GridView,它运行良好,但没有 Masonry 风格。然后,经过各种研究,我终于使用了:

  1. Fresco获取图像和缓存
  2. RecyclerView用于StaggeredGridLayoutManager显示来自 API 的图像。
  3. 自定义布局SimpleDraweeView以显示每个项目。
  4. 我自己的自定义适配器“MasonryAdapter”将数据绑定到视图。

在自定义布局中,我将 SimpleDraweeView 设置为:

layout_with = match_parent
layout_height = wrap_content

然后,在我的适配器中,我为每个图像设置了正确的纵横比,就像在我的 API 中一样,我可以轻松获取图像的宽度和高度。

holder.contentImage.aspectRatio = image.width.toFloat() / image.height.toFloat()

虽然一开始一切看起来都可以接受,但滚动后我发现一切都崩溃了。我对Android&很陌生Kotlin,请问您是否需要任何东西。在这里,我将 GIF 附加到正在发生的事情上。

预习

如果图片被删除,请在此处查看:https ://ibb.co/dy0EjH

标签: androidkotlinandroid-recyclerviewrecyclerview-layout

解决方案


我遇到了类似的问题,我在约束布局中使用 textview。

在回收站视图中使用约束布局时会中断,解决了我的问题(正如评论中提到的@AutonomousApps):

我刚刚将约束布局版本(目前最新的稳定版本)从1.0.1更新到1.1.1

因此,如果您使用的是约束布局,只需更新到最新的稳定版本,这可能会解决您的问题!

(截图见下图)

在此处输入图像描述

意外行为

在此处输入图像描述

更新约束布局版本后


推荐阅读