我有一个包含2列的RecyclerView和GridLayoutManager。 如何在第一个屏幕截图上强制LayoutManager与模板一致?现在我的结果就像第2张截图一样。
需要结果:
目前的结果:
答案 0 :(得分:20)
GridLayoutManager
将使用网格,您可以为不同的单元格设置一些跨度,但不能设置不同的高度。
你想要的是StaggeredGridLayoutManager
。如果它们合适,这只会将项目放在屏幕上,从而产生您所需的结果。如果您愿意,还可以使用setGapStrategy
更改重新排序行为。
答案 1 :(得分:4)
这很容易。您必须将此管理器添加到RecycleView:
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1));
就我而言,它看起来像这样:
Context context = view.getContext();
RecyclerView recyclerView = (RecyclerView) view;
if (mColumnCount <= 1) {
recyclerView.setLayoutManager(new LinearLayoutManager(context));
} else {
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1));
}
recyclerView.setAdapter(new MyItemRecyclerViewAdapter(DummyContent.ITEMS, mListener));