1.前言
在RecyclerView上使用StaggeredGridLayoutManager布局管理器很容易实现瀑布流布局。瀑布流布局比线性布局和网格布局美观,手机屏幕空间利用率高,但是实现方式也比它们复杂,而且经常会有一些莫名奇怪的bug会在瀑布流布局上出现,线性和网格则不会。
本来将重点介绍瀑布流两个臭名昭著的bug。通过深入探索瀑布流布局的实现原理,分析它们的形成原因,并给出优雅解决它们的解决方案。
1.1 bug1:顶部空白、重排序
bug复现操作:
- 将瀑布流滑动到底部;
- 点击刷新按钮,调用Adapter.notifyDataSetChanged();
- 从下往上滑动瀑布流列表至顶部时手指离开屏幕。
bug描述
当滑动到顶部时,顶部出现空白,松手时瀑布流发生重排序,并且触发了动画。
在实际的项目中,我们不太希望用户看到这种明显的动画,甚至不想用户看到瀑布流顶部出现空白。
1.2 bug2:瀑布流左右间距错乱
bug复现操作同bug1