To achieve what you need you need to combine two things: setup GridLayoutManager and set up adapter:
in Fragment/Activity:
val snapHelper = PagerSnapHelper()
snapHelper.attachToRecyclerView(recyclerView)
//Grid layout, 2 columns
recyclerView.layoutManager =
GridLayoutManager(this.context, 2, RecyclerView.HORIZONTAL, false)
and then in your adapter:
var displayMetrics = DisplayMetrics()
private var screenWidth = 0
in onCreateViewHolder:
(parent.context as MainActivity).windowManager.defaultDisplay.getMetrics(displayMetrics)
screenWidth = displayMetrics.widthPixels
in 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