GridLayoutManager 中的不同(动态)项目高度
Posted
技术标签:
【中文标题】GridLayoutManager 中的不同(动态)项目高度【英文标题】:Different (dynamic) items height in GridLayoutManager 【发布时间】:2016-04-30 22:39:27 【问题描述】:我有一个包含 2 列的 RecyclerView 和 GridLayoutManager。 如何强制 LayoutManager 与第一个屏幕截图上的模板一致?现在我得到了第二张截图的结果。
需要结果:
当前结果:
【问题讨论】:
【参考方案1】:GridLayoutManager
将使用网格,您可以设置一些跨度,但不能为不同的单元格设置不同的高度。
你想要的是StaggeredGridLayoutManager
。如果它们适合,这只会将项目放在屏幕上,从而产生您需要的结果。如果需要,您还可以使用 setGapStrategy
更改重新排序行为。
【讨论】:
"但不同单元格的高度不同。"不过,您可以设置不同的行高;例如,每个单元格都有高度设置为 wrap_content 的图像视图,并且在每个单元格中设置了不同的图像,那么每一行将采用最大图像的高度 如何实现垂直交错网格布局项目的水平动态大小?或者换句话说,假设我在交错网格布局中有 2 列。我可以动态更改列宽吗?【参考方案2】:这真的很容易。您必须将此管理器添加到 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));
【讨论】:
以上是关于GridLayoutManager 中的不同(动态)项目高度的主要内容,如果未能解决你的问题,请参考以下文章
recyclerview gridlayoutmanager 怎么设置列数
GridLayoutManager 如何在下一行显示不同的视图类型
GridLayoutManager 未显示 Android 中的所有元素
recyclerview 中的 GridLayoutManager,元素之间有空间并匹配全宽