在 RecyclerView 中平均分配项目

Posted

技术标签:

【中文标题】在 RecyclerView 中平均分配项目【英文标题】:Distributing Items equally in a RecyclerView 【发布时间】:2018-06-16 01:00:18 【问题描述】:

目标:以某种方式水平显示项目列表(RecyclerView),它们在屏幕上平均分布,并使它们之间的边距至少 X dp,以便视图可滚动,如果不是所有视图都适合屏幕。

希望以下图片能帮助您理解我的问题:

在这里,我得到了两个在屏幕宽度上平均分布的项目:

这里有很多东西;项目之间使用“最小边距”并且回收器正在滚动

我通过预先测量我的视图来实现此行为,然后手动计算视图之间的边距,将其设置在 onBindViewHolder 内。这似乎是一种肮脏的做法,尤其是因为我需要为每个itemView 调用requestLayout

我使用weights 尝试了一些事情,但这似乎没有按预期工作。我正在为我的RecyclerView 使用LinearLayoutManager

有没有人建议如何以更好、更清洁的方式实现这种行为?

【问题讨论】:

【参考方案1】:

您可以使用 recyclerView.addItemDecoration 方法来添加您的自定义项目装饰并解决您的间距问题。代码可以在here找到。希望这会有所帮助。

【讨论】:

好吧,我可以用它来代替边距,但这似乎仍然是一种奇怪的方法。不过谢谢。

以上是关于在 RecyclerView 中平均分配项目的主要内容,如果未能解决你的问题,请参考以下文章

C#winform中在一个主窗体中打开几个子集窗口,如何让子集窗口在主窗体中平均分布

在Swift中平均分割一个大向量[重复]

当 RecyclerView 为空时,CollapsingToolbarLayout 不应折叠

改变方向recyclerview卡大小变化

使用自动布局视觉格式字符串平均分配间距

经济学十大原理