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

Different (dynamic) items height in GridLayoutManager

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

需要结果:

当前结果:

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

你要的是StaggeredGridLayoutManager. This will just put the items on the screen if they fit, leading to your needed result. You can also change the reordering behavior, if you want to, by using setGapStrategy.

真的很简单。您必须将此管理器添加到 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));