使用RecyclerView跨多个列

所以我想要的是有一个交错的布局,但列表中的第一项需要跨越两列。 前两行也是固定的高度。 除了第一个项目跨越两列,我有一切工作。

我正在使用StaggeredGridLayoutManager的RecyclerView.Adapter。 看起来好像不是开箱即用的function。 我想我可以做一个自定义布局pipe理器,我只是不知道从哪里开始。 我试过search,但我找不到有关如何获取项目跨越多个列的任何内容。

下面的图片是我在列表中寻找的东西。

交错布局

目前, StaggeredGridLayoutManager仅支持跨越所有列的视图(对于垂直configuration的布局),而不是任意数量的视图。

如果你仍然想跨越所有的列,你应该在适配器实现中做到这一点:

 public final void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams(); layoutParams.setFullSpan(true); } 

恕我直言, StaggeredGridLayoutManager仍在沉重的发展和谷歌希望我们使用它的反馈:(

我所做的跨越垂直configuration布局的所有列是创build新的LayoutParams并在适配器实现中将full span设置为true:

 @Override public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, int position) { StaggeredGridLayoutManager.LayoutParams layoutParams = new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); layoutParams.setFullSpan(true); viewHolder.itemView.setLayoutParams(layoutParams); }