我正在尝试制作一个水平滚动的网格。它有两行。第二行是偏移的(一个项目宽度的一半,但这计算起来很简单,在这里无关紧要)。
然而,事实证明,抵消非常困难。
它最终应该看起来像
有没有人有任何建议让第二行像上图一样交错?
我正在尝试制作一个水平滚动的网格。它有两行。第二行是偏移的(一个项目宽度的一半,但这计算起来很简单,在这里无关紧要)。
然而,事实证明,抵消非常困难。
它最终应该看起来像
有没有人有任何建议让第二行像上图一样交错?
将StaggeredGridLayoutManager与 ItemDecoration 一起使用,它将偏移量添加到适配器位置 0 处的项目。您将获得所需的输出。(通过getItemOffsets)。或者,当调用 onBind 时,您可以设置第一个项目的宽度,而不是 ItemDecoration,以使其包含左侧的间隙。
如果您的数据集发生更改,请不要调用 notifyDataSetChanged,这将重置 SGLM 中的历史计算。相反,请使用诸如notifyItemRangeInserted之类的详细通知事件,以便 SGLM 能够在不重置位置的情况下重新计算布局。
我不知道您是否仍在为此工作,但我的方法是使用适当的偏移量一次(顶部/底部)渲染项目 2,然后使用您的水平边距(将它们设置为负数)创建项目 2 和 3 之间的重叠等。
您必须将 OnTouchListeners 绑定到正在呈现的各个项目,而不是 RecyclerView 条目。