如何按阅读顺序实现交错视图?

How do I implement staggered views in reading order?

这是我要实现的:

我正在尝试显示我从网络上获得的定义(现在它们来自虚拟数据,但既不存在也不存在)。

我的第一个想法是使用水平的 StaggeredGridView。这有两个问题。视图未按正确顺序排列,跨度计数未动态设置。此外,我发现在 onLayoutChildren() 中调用 setSpanCount() 会在 运行 时间导致错误。

当然,我可以只使用 LinearLayout 并放弃回收视图的尝试。这在大多数情况下都可行,但如果用户确实碰巧遇到了长度定义,那将是非常低效的内存。

考虑到这一点,我决定继承 StaggeredGridLayoutManager。这就是我需要你帮助的地方。以下是我自己搜索找到的资源:

Google's Implementation of a LinearLayoutManager

A Guide Implementing a Custom LayoutManager

Another Guide for Implementing a Custom LayoutManager

An Overview of a Few Principles to Follow when Implementing a Custom LayoutManager

我经历了其中的每一个,但我无法在头脑中区分出哪些部分用于它们的特定用例,哪些部分对于所有自定义实现都是通用的。如果有人能为我指出资源的方向或解释我必须以何种顺序和出于何种目的调用所有方法,我将不胜感激。谢谢!

您的第一个屏幕截图看起来非常适合 Google's FlexboxLayout library. You can use the FlexboxLayoutManager 使用 RecyclerView 来准确显示您显示的内容。