问题标签 [staggeredgridlayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1780 浏览

android - 为什么我的 StaggeredGrid RecyclerView 布局每个项目,而不仅仅是可见的?

我有一个包含 370 个项目和图像的交错网格。

我想确保快速回收这些项目以小心内存,但是创建了一个 ViewHolder 然后为我的适配器中的每个项目绑定并且不注意孩子是否可见

我试过以下

日志显示 onCreateViewHolder 和 onBindViewHolder 分别被调用 185 次。然后 onViewRecycled 被调用 185 次,然后继续调用 onCreateViewHolder 直到我们达到完整的 370。

这可能是我的一个理解问题,但我认为 RecyclerView 应该只绑定那些可见的视图,或者尊重只有 20 个视图,或者池中的 20 个 + 屏幕上适合的视图。如何使用 StaggeredGridLayoutManager 实现这一点?

如果我听滚动更改并使用 findFirstCompletelyVisibleItemPositions 和 findLastCompletelyVisibleItemPositions 这仍然跨越适配器中的每个项目,而不仅仅是适合屏幕的 6 个项目

我的适配器代码

我的活动布局结构

片段布局

0 投票
0 回答
684 浏览

android - 可以根据内容的宽度交错管理视图并垂直滚动吗?

我正在使用交错视图创建将包含文本视图的视图标签,但我在管理我的内容时遇到了问题如果我使用的是交错水平管理器,这将根据我的需要根据内容的宽度管理我的标签,但可滚动是水平的。

在此处输入图像描述

如果我使用交错垂直管理器,那么它会根据高度管理内容。 我可以自定义交错视图以根据它们的宽度管理这些标签,但可滚动是垂直的吗?

请帮助解决这个问题,我将不胜感激。

0 投票
0 回答
235 浏览

android - Android,任何想法显示具有随机宽度和高度的嵌套列表?

我有一个像 A{a1, a2, a3...aN}, B{B1, BM}, .... O{O1, o2, ... OP} 这样的嵌套列表。该列表具有随机数量的成员。每个成员也是随机的成员列表。这将如下图所示。如您所见,外部单元格的宽度和高度不是固定的。我想如果我使用嵌套的 recyclerview 可能有可能。它有点像 StaggeredGridLayoutManager。但据我了解, StaggeredGridLayoutManager 应该有一个宽度或高度应该是固定的。有什么建议如何实现这种 UI 设计? 这就是我想要展示的

这是我使用 StaggeredGridLayoutManager 时显示的内容

这是外部列表适配器 /********** 类 GroupAdapter 扩展 RecyclerView.Adapter{

这是内部列表适配器类 CandidateAdapter extends RecyclerView.Adapter{ ArrayList candis;

StaggeredGridLayoutManager 是这样制作的。

0 投票
1 回答
188 浏览

android - 如何使用 StaggeredGridLayoutManager 按顺序创建不同大小的项目?

我有一个列表,其中包含包含不同类别的项目。例如,我有 4 个列表,我像这样合并它们:

我像这样合并这些:

所有列表项可能有不同的大小,我想将所有 A 项定位到第一个跨度,B 项第二个跨度和 CD 项相同...

但是项目总是位于不同的跨度中。因为项目大小不同,并且一些项目是在小尺寸项目之后创建的,而不是在下一个跨度中。有没有办法用 StaggeredGridLayoutManager 解决这个问题?

0 投票
0 回答
383 浏览

android - 在多个(不同)行和列跨度上具有 StaggeredLayoutManager 的 RecyclerView

我有一个RecyclerView并且StaggeredLayoutManager我想放置一些CardView具有不同行和列跨度但基于定义的固定大小
,例如:

在此处输入图像描述


如果您看到CardView0是 4X(2 行 x 2 列)1
并且较小CardView的尺寸是其他尺寸的基础

所有卡片尺寸均为:
行 X 列
1 x 1
1 x 2
2 x 1
2 x 2

但是当我定义StaggeredLayoutManager需要通过跨度大小时,在这种情况下跨度大小是5

但主要问题是当我通过跨度大小时我RecyclerView除以它不能处理超过 1 个跨度,如果它更大,我看到它的宽度被削减了一半,但高度还可以

我怎样才能配置我的RecyclerViewStaggeredLayoutManager解决这个问题,并且可以在行和列中处理 2D 跨度大小?

0 投票
4 回答
3950 浏览

android - StaggeredGridLayoutManager 重新排序项目

我的项目有不同的布局,有时我通过拖动布局中的项目在 RecyclerView 顶部创建一个或多个间隙。当我滚动回 RecyclerView 的顶部时,一些项目被重新排序,并且它们填补了空白。此处捕获行为:

滚动到顶部时自动重新排序

填补空白是可以的。当项目在拖动过程中改变位置时也可以。问题在于滚动到顶部。滚动结束时会发生重新排序 - 我没有触摸屏幕。

这就是我创建 RecyclerView 和 Layout Manager 的方式

ItemTouchHelper 类

RecyclerView 适配器

现在我使用 12 种具有相同结构的不同布局。只有高度不同才能模拟最终的小部件。

项目布局示例

0 投票
0 回答
898 浏览

android - 在回收站视图中使用交错的网格布局管理器以颗粒顺序对项目进行排序是可能的

我有 recyclerview,它在卡片视图中显示很多项目,这些视图是动态高度,如下图所示。
在此处输入图像描述

我实现了它,但如果我应用任何类似增加的订单,我得到了这个,我还有另一个问题。

在此处输入图像描述

如果我们查看第 5 和第 6 卡不遵循顺序。这是令人不安的 UI。我知道这是因为交错而发生的。

有什么办法不打扰交错我们也可以实现订购。

0 投票
1 回答
1018 浏览

android - Image height stretched (SimpleDraweeView)

Recently I'm playing around with some popular android libs, and I need a help with StaggeredGridLayout & Fresco.

Let me show you what I'm getting wrong

As you can see, these images height is streched

I've tried changing layout_height params in XML/via java, but I'm not getting good results.

Everything is up on my Github repo

Some snippets

}

PSA: I've already tried to play around with wrap_content, but got no luck (yes, I know Fresco doesn't support it).

0 投票
2 回答
920 浏览

android - Recycler View 的交错布局管理器崩溃

我正常加载回收站,数据显示正确。但我需要在特定条件下重新创建我的活动。当我重新创建我的活动时,Recycler 视图会再次初始化并加载新的数据集。但这一次我遇到了崩溃。以下是日志。任何帮助将非常感激.. !!!

0 投票
3 回答
4535 浏览

android - Recyclerview StaggeredGridLayoutManager - 查找最后一个可见项目

我正在使用带有无尽滚动的 StaggeredGridLayoutManager 的 Recyclerview。当列表的最后一项对用户可见时,我想进行网络调用。所以这是我的代码:

我在第一次调用时从服务器获得 9 个值。因此,当我移动到最后一个索引 [8] 时,lastVisibleItem 将为 8,visibleThreshold 为 1,totalItemCount 为 9,因此应该发生下一次网络调用。现在实际发生的情况是,当屏幕第一次加载时,lastVisibleItem 应该是 1 或 2,但它返回 8,因此会调用 loadMore()。

日志猫:

上面的代码有什么问题?需要帮助请叫我。相同的代码以前运行良好。