gpt4 book ai didi

android - RecyclerView - 连续列布局

转载 作者:行者123 更新时间:2023-12-04 17:24:11 24 4
gpt4 key购买 nike

我正在尝试创建一个布局,其中项目将在列中一个接一个地排列(见下图),但我还没有做到这一点。我已经尝试过 GridLayoutManagerStaggeredGridLayoutManager - 两者的问题都没有提供项目流入另一列并以这种方式相互跟随的功能。在我目前的尝试中,我正在尝试 FlexboxLayoutManager 但我得到的结果总是包含单个项目的列,而不是一个接一个地流动的项目。

期望的行为是项目一个接一个地定位,当回收器的高点不允许完整的项目 View 时,它应该被分解到下一列。

这是我现在正在尝试的:

mBinding?.activeRecycler?.layoutManager = FlexboxLayoutManager(context).apply {
flexDirection = FlexDirection.COLUMN
flexWrap = FlexWrap.WRAP
alignItems = AlignItems.STRETCH
}

这让我每列一个项目。

试图实现这一目标:

enter image description here

最佳答案

我非常怀疑这是可能的。RecyclerView、它的适配器和它的布局管理器都不是为了改变 View 的基本形式而设计的。

这意味着“拆分”一个是不可能的。RecyclerView 旨在了解同时有多少 View ,仅创建那么多 View ,然后将底层对象分别绑定(bind)到 View 。

这意味着 RecyclerView 不会“将 View 切成两半并在不同的地方显示它的两半”。

要使像您这样的布局成为可能,唯一的方法就是布局管理器是否专门设计用于在多个 View 中显示一个项目,从而在多个位置显示一个项目。然后可以按照您的描述显示它。但是,正如我所说,这意味着中间的 View 3 和最后一列的 View 3 将是绑定(bind)到同一对象或副本的两个 View 它的。 (或者有人完全疯了,实际上 split 了观点,我对此表示怀疑)。

我不相信任何标准布局管理器都能做到这一点,而且我怀疑您是否至少可以在不相应地更改适配器的情况下实现这一点。因为适配器基本上执行绑定(bind),所以如果没有它的帮助,标准布局管理器将无法执行上述双重绑定(bind)。

话虽如此,这只是一个很好的猜测,遵循 View 及其组件的原则。我没有阅读每个布局管理器的源代码或完整描述。

关于android - RecyclerView - 连续列布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64435986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com