回收站视图(水平),其中两个项目占父级宽度的50%

问题描述 投票:0回答:1

我想确保在回收者视图(>方向和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%。因此两者都适合屏幕。我...

android android-layout android-recyclerview recycler-adapter
1个回答
0
投票
GridLayoutManager将根据您指定的列数为您的项目提供最佳大小和空间。在您的情况下,您希望每行有2个项目,因此您的代码应类似于:
© www.soinside.com 2019 - 2024. All rights reserved.