我想确保在回收者视图(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的工作,但显然这不是解决方案,因为我怀疑实现这一目标必须如此复杂。
执行此操作的正确方法是什么?
我想确保在回收器视图(水平方向和LinearLayoutManager集)中,如果我有2个项目要显示,它们都将获得父布局的50%。因此两者都适合屏幕。我...
GridLayoutManager
将根据您指定的列数为您的项目提供最佳大小和空间。在您的情况下,您希望每行有2个项目,因此您的代码应类似于: