每行中具有不同列号的网格布局管理器
Gridlayout manager with different column numbers in each row
我需要一个在一行中具有不同列数的回收器视图。为此,我使用了具有动态跨度大小的网格布局管理器。这是我的代码:
rvSubCat.layoutManager = StaggeredGridLayoutManager(4, 1)
val viewTreeObserver = rvSubCat.getViewTreeObserver()
viewTreeObserver.addOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener { calculateSize() })
categoryAdapter = CategoryAdapter(categoryList, true, this)
rvSubCat.adapter = categoryAdapter
private fun calculateSize() {
val spanCount = Math.floor((rvSubCat.getWidth() / SizeUtils.dp2px(sColumnWidth.toFloat())).toDouble()).toInt()
(rvSubCat.getLayoutManager() as StaggeredGridLayoutManager).spanCount = spanCount
}
但是想要的结果并不好。它正在固定每行中的列数。我需要的列数应取决于行项目的总宽度。
需要这个(期望的结果):
得到这个
你需要的是流式布局。我认为这些库将帮助您解决问题:
https://github.com/nex3z/FlowLayout
https://github.com/ApmeM/android-flowlayout
根据文字大小调整。希望这有帮助!
我使用的最好的轻量级库
compile 'com.xiaofeng.android:flowlayoutmanager:1.2.3.2'
好处是你不需要改变你现有的代码,你只需要改变 recyclerview 的 LayoutManager 就像
recyclerView.setLayoutManager(new FlowLayoutManager());
大功告成,祝编码愉快:)
更新 您已经知道如何填充回收站视图。但是通过以下
进行验证
private void setAdapter() {
recyclerView = (RecyclerView) fragment_view.findViewById(R.id.rv);
recyclerView.setLayoutManager(new FlowLayoutManager());
myRecyclerAdapter = new AdapterOrders(getActivity(), list);
recyclerView.setAdapter(myRecyclerAdapter);
}
从任何来源更改列表后调用 myRecyclerAdapter.notifyDataSetChanged();
。
我需要一个在一行中具有不同列数的回收器视图。为此,我使用了具有动态跨度大小的网格布局管理器。这是我的代码:
rvSubCat.layoutManager = StaggeredGridLayoutManager(4, 1)
val viewTreeObserver = rvSubCat.getViewTreeObserver()
viewTreeObserver.addOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener { calculateSize() })
categoryAdapter = CategoryAdapter(categoryList, true, this)
rvSubCat.adapter = categoryAdapter
private fun calculateSize() {
val spanCount = Math.floor((rvSubCat.getWidth() / SizeUtils.dp2px(sColumnWidth.toFloat())).toDouble()).toInt()
(rvSubCat.getLayoutManager() as StaggeredGridLayoutManager).spanCount = spanCount
}
但是想要的结果并不好。它正在固定每行中的列数。我需要的列数应取决于行项目的总宽度。
需要这个(期望的结果):
得到这个
你需要的是流式布局。我认为这些库将帮助您解决问题:
https://github.com/nex3z/FlowLayout
https://github.com/ApmeM/android-flowlayout
根据文字大小调整。希望这有帮助!
我使用的最好的轻量级库
compile 'com.xiaofeng.android:flowlayoutmanager:1.2.3.2'
好处是你不需要改变你现有的代码,你只需要改变 recyclerview 的 LayoutManager 就像
recyclerView.setLayoutManager(new FlowLayoutManager());
大功告成,祝编码愉快:)
更新 您已经知道如何填充回收站视图。但是通过以下
进行验证private void setAdapter() {
recyclerView = (RecyclerView) fragment_view.findViewById(R.id.rv);
recyclerView.setLayoutManager(new FlowLayoutManager());
myRecyclerAdapter = new AdapterOrders(getActivity(), list);
recyclerView.setAdapter(myRecyclerAdapter);
}
从任何来源更改列表后调用 myRecyclerAdapter.notifyDataSetChanged();
。