到目前为止,我已经尝试过了
LinearLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
但它显示了2行而不是2列。
如何使用水平滚动显示两个带有回收站视图的项目?
答案 0 :(得分:4)
好的,这是一个基础,
当您使用GridLayoutManager.HORIZONTAL
时,第二个参数将被视为行数
而当你写GridLayoutManager.VERTICAL
时,第二个参数将被视为列数
另外,这个
LinearLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
应该是,
GridLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
在上面的代码中,2被认为是要生成的行数。
答案 1 :(得分:1)
最近遇到了同样的问题,最后创建了一个自定义GridLayoutManager,使我可以将行数和列数固定在一起。
链接:-https://gist.github.com/KaveriKR/04bfef5ffc9c00a8b6fca503da497322
此自定义布局管理器利用generateDefaultLayoutParams
和其他两个功能来为布局管理器设置不同的布局参数。
答案 2 :(得分:0)
尝试以下代码
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(mLayoutManager);
答案 3 :(得分:0)
要实现所需的功能,需要结合两件事:设置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
答案 4 :(得分:-1)
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(activity,2,LinearLayoutManager.HORIZONTAL,false);
recyclerView.setLayoutManager(mLayoutManager);