RecyclerView天然支持流式布局,只需要设置layoutManager为StaggeredGridLayoutManager,不过如果item中有图片,由于图片异步加载,会导致item布局变化,这倒也没什么,关键是在holder复用的过程中,由于图片异步加载,原先的图片尺寸与即将要加载的图片尺寸不一样,就导致上下滑动的时候,因为item默认是按照哪边有空缺,就先填充哪边,比如原本的顺序如下:
假如加载item10开始复用holder,则下一屏复用后如下,注意,此时图片都未加载完成
第二屏的状态下还未复服用holder8和holder9,
假设下图未图片加载完成后的状态,注意,图片加载完成后只会改变holder高度,不会重排序
现在假设我们再往回滑动,可以肯定的是,不管图片有没有缓存,滑动回顶部的时候,顶部holder一定是无法对其的。下图未滑动回顶部时holder加载状态及图片加载完成后item状态如下
RecyclerView流式布局StaggeredGridLayoutManager,重排序问题
最新推荐文章于 2024-08-28 17:21:46 发布
本文探讨了在RecyclerView使用StaggeredGridLayoutManager时,由于图片异步加载导致的布局重排序问题。解决方案包括在图片加载前确定尺寸以避免滑动时的动画效果,以及一开始就设置好图片尺寸以确保正确对齐。然而,完全避免重排的最稳妥方法是在bindHolder时已知图片尺寸。
摘要由CSDN通过智能技术生成