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

Bli*_*dRu 10 height android rows gridlayoutmanager android-recyclerview

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

需要结果:

目前的结果:

Dav*_*jak 22

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

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


Eli*_*ala 9

这真的很容易。您必须将此管理器添加到 RecycleView:

recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1));
Run Code Online (Sandbox Code Playgroud)

就我而言,它看起来像这样:

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));
Run Code Online (Sandbox Code Playgroud)