GridLayoutManager中的不同(动态)项高度

时间:2016-01-24 17:05:55

标签: android height android-recyclerview rows gridlayoutmanager

我有一个包含2列的RecyclerView和GridLayoutManager。 如何在第一个屏幕截图上强制LayoutManager与模板一致?现在我的结果就像第2张截图一样。

需要结果:

目前的结果:

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));