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

时间:2018-10-30 22:15:15

标签: android android-layout android-recyclerview recyclerview-layout staggeredgridlayoutmanager

这是我要实现的:

Staggered Views

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

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

Staggered View Attempt

当然,我可以只使用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

我仔细研究了其中的每一个,但是我无法从心理上分离出特定用例的哪些部分以及所有自定义实现共有的部分。如果有人善良地将我指向资源的方向,或解释我必须以什么顺序和目的调用什么方法,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您的第一个屏幕截图看起来很适合Google's FlexboxLayout library。您可以将FlexboxLayoutManager与RecyclerView结合使用以获取所显示的内容。