RecyclerView - 水平,两行网格,第二行偏移

时间:2014-07-30 21:20:04

标签: android android-gridview android-recyclerview

我正在尝试制作水平滚动网格。它有两行。第二行是偏移的(一个项目的宽度的一半,但这是微不足道的计算,在这里无关紧要。)

我目前正在使用来自https://github.com/antoniolg/RecyclerViewExtensions/tree/master/library/src/main/java/com/antonioleiva/recyclerviewextensions

的RecyclerView和GridLayoutManager

然而,抵消证明非常困难。

它应该看起来像1

是否有人建议将第二行错开,如上图所示?

2 个答案:

答案 0 :(得分:4)

StaggeredGridLayoutManager与ItemDecoration一起使用,将偏移量添加到适配器位置0处的项目。您将获得所需的输出。 (通过getItemOffsets)。 或者,代替ItemDecoration,当调用onBind时,您可以设置第一个项目的宽度,使其在左侧包含间隙。

如果您的数据集发生变化,请不要调用notifyDataSetChanged,这将重置SGLM中的历史计算。相反,请使用详细的通知事件,例如notifyItemRangeInserted,以便SGLM能够在不重置位置的情况下重新计算布局。

答案 1 :(得分:0)

我不知道你是否还在努力解决这个问题,但我的方法是用适当的偏移量一次渲染2个项目(顶部/底部),然后玩你的水平边距(将它们设置为负)以创建项目2和3之间的重叠等。

您必须将OnTouchListeners绑定到正在呈现的各个项目,而不是RecyclerView条目。