Chh*_*oro 4 android recycler-adapter android-recyclerview recyclerview-layout
到目前为止我已经尝试过了
LinearLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
Run Code Online (Sandbox Code Playgroud)
但它显示2行而不是两列。
如何在回收者视图中以水平滚动显示两个项目?
好了,这里是一个基础
使用时GridLayoutManager.HORIZONTAL,第二个参数将被视为行数
同时,当您编写GridLayoutManager.VERTICAL第二个参数时,将被视为列数
还有这个
LinearLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
Run Code Online (Sandbox Code Playgroud)
应该是,
GridLayoutManager layoutManager =
new GridLayoutManager(getActivity(), 2, GridLayoutManager.HORIZONTAL, false);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,将2视为要生成的行数。
为了实现你所需要的,你需要结合两件事:设置 GridLayoutManager 和设置适配器:
在片段/活动中:
val snapHelper = PagerSnapHelper()
snapHelper.attachToRecyclerView(recyclerView)
//Grid layout, 2 columns
recyclerView.layoutManager =
GridLayoutManager(this.context, 2, RecyclerView.HORIZONTAL, false)
Run Code Online (Sandbox Code Playgroud)
然后在你的适配器中:
var displayMetrics = DisplayMetrics()
private var screenWidth = 0
Run Code Online (Sandbox Code Playgroud)
在 onCreateViewHolder 中:
(parent.context as MainActivity).windowManager.defaultDisplay.getMetrics(displayMetrics)
screenWidth = displayMetrics.widthPixels
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
尝试下面的代码
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(mLayoutManager);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4937 次 |
| 最近记录: |