如何在滚动时修复RecyclerView的StaggeredGridLayoutManager分离内容并随机飞行

时间:2018-04-30 00:22:27

标签: android android-recyclerview kotlin recycler-adapter recyclerview-layout

我试图获取远程图像,我已经使用API​​并将其显示在Masonry Grid(Pinterest Style)中。

起初我使用简单的GridView,它工作得很好但没有砌体风格。然后,经过各种研究,我终于使用了:

  1. Fresco获取图片&高速缓存
  2. RecyclerViewStaggeredGridLayoutManager一起显示来自API的图片。
  3. 使用SimpleDraweeView自定义布局以显示每个项目。
  4. 我自己的定制适配器" MasonryAdapter"将数据绑定到视图。
  5. 在自定义布局中,我将SimpleDraweeView设置为:

    layout_with = match_parent
    layout_height = wrap_content
    

    然后,在我的适配器中,我为每个图像设置了正确的宽高比,就像在我的API中一样,我可以获得图像'宽度和宽度身高很容易。

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

    虽然在第一时刻一切都看起来可以接受但滚动后我发现一切都分开了。我对Android& Kotlin,请询问您是否需要任何帮助。在这里,我将GIF附加到正在发生的事情上。

    Preview

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

(有关截图,请参见下面的图片)

enter image description here

意外行为

enter image description here

更新约束布局版本后