[英]Displaying more than 5columns in recycler view with horizontal scroll view
[英]Recycler View Horizontal Scroll with 2 columns
这是我到目前为止尝试过的
LinearLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
但它显示了 2 行而不是 2 列。
如何使用回收站视图显示两个带有水平滚动的项目?
好的,这是一个基础,
当您使用GridLayoutManager.HORIZONTAL
时,第二个参数将被视为行数
同时,当您编写GridLayoutManager.VERTICAL
时,第二个参数将被视为列数
还有,这
LinearLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
应该是,
GridLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
在上面的代码中,2 被认为是要生成的行数。
要实现您需要的内容,您需要结合两件事:设置 GridLayoutManager 和设置适配器:
在片段/活动中:
val snapHelper = PagerSnapHelper()
snapHelper.attachToRecyclerView(recyclerView)
//Grid layout, 2 columns
recyclerView.layoutManager =
GridLayoutManager(this.context, 2, RecyclerView.HORIZONTAL, false)
然后在您的适配器中:
var displayMetrics = DisplayMetrics()
private var screenWidth = 0
在 onCreateViewHolder 中:
(parent.context as MainActivity).windowManager.defaultDisplay.getMetrics(displayMetrics)
screenWidth = displayMetrics.widthPixels
在 onBindViewHolder 中:
val itemPadding = 8
//here you may change the divide amount from 2.5 to whatever you need
val itemWidth = (screenWidth - itemPadding).div(2.5)
val layoutParams = holder.itemView.layoutParams
layoutParams.height = layoutParams.height
layoutParams.width = itemWidth.toInt()
holder.itemView.layoutParams = layoutParams
最近遇到了同样的问题,最后创建了一个自定义 GridLayoutManager,它允许我一起修复行数和列数。
链接: - https://gist.github.com/KaveriKR/04bfef5ffc9c00a8b6fca503da497322
这个自定义布局管理器使用generateDefaultLayoutParams
和其他两个函数来为布局管理器设置不同的布局参数。
试试下面的代码
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(mLayoutManager);
Java 的所有答案,但如果有人搜索 Kotlin;
val layoutManager = GridLayoutManager(requireContext(), 2)
recyclerViewSymbol.layoutManager = symbolLayoutManager
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(activity,2,LinearLayoutManager.HORIZONTAL,false);
recyclerView.setLayoutManager(mLayoutManager);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.