Я хочу убедиться, что в режиме рециркуляции ( горизонтальная ориентация и LinearLayoutManager
набор), что если у меня есть 2 элемента для отображения, они оба получают 50% от родительского макета. Таким образом, оба помещаются на экране.
Я пробовал 2 подхода, но ни один из них не работает должным образом.
Подход 1:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val itemView = inflater.inflate(R.layout.horizontal_list_item_view, parent, false)
itemView.post(
object : Runnable {
override fun run() {
itemView.layoutParams.width = (parent.width * 0.5).toInt()
}
}
)
return ViewHolder(itemView)
}
Это не работает, если я сначала не прокручиваю, а затем только первый элемент его ширина адаптирована.
Подход 2:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val itemView = inflater.inflate(R.layout.horizontal_list_item_view, parent, false)
itemView.layoutParams.width = getScreenWidthFromUtils(context).x_width - MAGIC_NUMBER_WHICH_TAKES_PADDING_INTO_ACCOUNT)* 0.5).toInt()
return ViewHolder(itemView)
}
Подход 2 вида работ, но, очевидно, это не может быть решением, так как я сомневаюсь, что это должно быть настолько сложно, чтобы достичь этого.
Как правильно это сделать?