我需要一个具有不同列数的回收站视图。为此,我使用了具有动态跨度大小的gridlayout管理器。这是我的代码:
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
}
但是期望的结果并不好。它正在修复每行中的列数。我需要的列数应该取决于行项的总宽度。
需要此(所需结果):
获取此
答案 0 :(得分:1)
我使用的最佳轻量级库
compile 'com.xiaofeng.android:flowlayoutmanager:1.2.3.2'
Benifit你不需要改变你现有的代码,你只需要改变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();
。
答案 1 :(得分:0)
您需要的是流程布局。我认为这些图书馆将帮助您解决目的:
https://github.com/nex3z/FlowLayout
https://github.com/ApmeM/android-flowlayout
根据文字大小进行调整。希望这有帮助!