23

我有一个带有 2 列的 RecyclerView 和 GridLayoutManager。如何强制 LayoutManager 与第一个屏幕截图上的模板一致?现在我得到了第二张截图的结果。

需要结果:

当前结果:

4

2 回答 2

32

GridLayoutManager将使用网格,您可以为不同的单元格设置一些跨度,但不能设置不同的高度。

你想要的是一个StaggeredGridLayoutManager. 如果它们适合,这只会将项目放在屏幕上,从而产生您需要的结果。如果需要,您还可以使用setGapStrategy.

于 2016-01-24T18:13:33.967 回答
9

这真的很容易。您必须将此管理器添加到 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));
于 2016-11-15T10:15:21.690 回答