问题标签 [staggeredgridlayoutmanager]

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 投票
0 回答
204 浏览

android - RecyclerView 与 StaggeredGridLayoutManager 行高问题

我正面临与 aRecyclerView相关的问题StaggeredGridLayoutManager。问题是我有两列跨度,但我想在回收站中间放一些全跨度项目。像这样: 带一个全跨度电池的回收器 问题是全跨单元和上单元之间的空白空间。有没有一种方法或东西可以告诉ViewHolder如何填充那个空间或类似的东西?

有谁知道如何实现这一目标?

提前致谢

0 投票
1 回答
867 浏览

android - 带有 StaggeredGridLayoutManager 的 RecyclerView:列数可变且可垂直滚动

我想显示一个字符串列表,这个列表必须是垂直可滚动的,并且对于每一行都有可变数量的列,这个列将取决于字符串。所以它将是一个可垂直滚动的网格。所以图形上我想实现这一点: 在此处输入图像描述

结果我得到的是一个可水平滚动的列表,有 3 行和许多列,而我想要的是相反的方式:不能水平滚动(很多列,取决于团队名称)但可以垂直滚动。

为了实现这一点,我在回收站视图中添加了一个 StaggeredGridLayoutManager,其中包含 3 个跨度计数(这可能是错误的),并且 StaggeredGridLayoutManager.GAP_HANDLING_NONE 尽可能多地拥有列。

第一个问题是是否可以使用 StaggeredGridLayoutManager 实现这一目标?如果是,我该如何解决我的问题?欢迎任何建议或想法。

请注意,xml 中的项目具有最大宽度,然后省略

我拥有的是以下内容:item_team.xml

团队适配器.java:

activity_main.xml

MainActivity.java

0 投票
0 回答
90 浏览

android - 使用 StaggeredGridLayoutManager 防止图片移动

我和这篇文章有同样的问题。

http://i.imgur.com/FUapm2K.gif?1

StaggeredGridLayoutManager 和移动项目

但是我无法理解答案,这是我在OnBindViewHolder()适配器方法中调用的方法。

我的图片已完美调整大小并保持其原始纵横比。但是当我再次向上滚动时,我得到了移动错误......

即使我会为每张图片“存储”这些值,如果不使用这些值,我应该在哪里以及如何再次使用这些值getLayoutParams().height

在我Fragment包含回收器视图的我只有 StaggeredGridLayoutManager 的以下代码行:

gridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);

即使我删除了DefaultAnimator它,即使它做得更快,我们仍然可以看到变化,这很丑陋。

谢谢

0 投票
1 回答
1405 浏览

android-recyclerview - 具有自动调整跨度计数的 StaggeredGridLayoutManager

我需要一个 StaggeredGridLayoutManager 遵循这两个要求:

  • 根据每列设置的最小 dp 大小自动计算列数,列扩展以完全适合可用空间(例如:如果我定义 150dp 最小列,并且应用程序在 480dp 宽度的设备上运行,则网格视图将包含 3 列,剩余的 30dp 将被平均分割,这样每列都是 160dp 宽)
  • 网格布局必须在方向更改时重新计算跨度计数,因为在纵向和横向模式下适合屏幕的列数通常相距很远

到目前为止,我还没有需要交错网格项,所以我使用了 GridLayoutManager 的扩展来提供这个功能:

在回收站视图中使用布局管理器:

最后,项目视图布局在宽度上设置为 match_parent,因此它们将占用布局管理器允许的尽可能多的空间。

但是,我无法让它与 StaggeredGridLayoutManager 一起使用。这是我的代码:

加载回收站视图后,我得到以下异常:

java.lang.IllegalStateException:当 RecyclerView 正在计算布局或滚动时无法调用此方法

问题是因为我在解决布局时调用了 setSpanCount(),这不是 GridLayoutManager 的问题,但在 StaggeredGridLayoutManager 中是不允许的。我的问题是,如果我不能在 onLayoutChildren() 期间设置跨度计数,我什么时候可以设置它

我知道我可以在初始化布局管理器之前计算出适合多少列,并将跨度计数传递给 StaggeredGridLayoutManager 构造函数。但是,这不会对方向更改做出反应,除非我向重新创建布局管理器的活动添加额外的逻辑,我希望避免这种情况。有没有办法让我的 GridAutoFitStaggeredLayoutManager 计算跨度计数自行处理方向更改?

0 投票
1 回答
292 浏览

android - 交错水平Recyclerview Android,需要帮助

自定义recyclerview布局管理器

我想要实现的是创建一个水平滚动的 RecyclerView,并且项目应该以不同的大小出现,类似于从 0 位置开始的绘图等等。到目前为止我尝试过的是:

  1. 在适配器 onBindViewHolder 上使用项目的位置,但这不是解决方案,也不能解决我的问题。
  2. 将StaggeredGridLayoutManager 实现为布局管理器StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.HORIZONTAL);,但 spanCount 阻止了我。
  3. GridLayoutManager 垂直滚动,而不是水平滚动

是否有任何关于如何设计特定 RecyclerView 布局管理器的库或指南?任何帮助将不胜感激,谢谢!

0 投票
1 回答
326 浏览

android - Android Staggered Grdiv 查看最后一个元素全屏(如果独立)

我有以下使用交错网格布局管理器的回收器视图:

在此处输入图像描述

我想像这样调整交错网格视图的每个项目(如果它是独立的,则最后一个元素全屏显示):

在此处输入图像描述

主.java:

list_item_type.xml:

content_main.xml:

我怎样才能做到这一点?

编辑:显然,设置:

在视图持有人的结果是:

在此处输入图像描述

但是,这不是我想要的,我只想要最后一个元素全屏

0 投票
1 回答
132 浏览

android - 如何在共享首选项上保存 RecyclerView 的 spanCount?

我的问题是有没有办法在 SharedPreferences 中保存 ReciclerView 的 SpamCount?我尝试创建一个可以将视图从“列表模式”更改为“网格模式”的列表,并将该信息保存在 SharedPreferences 中,以便在终止应用程序后保留“列表视图”。我正在尝试做的 例子如下......我在按钮点击时尝试做的例子

我尝试更改的代码如下...

尝试启动 Activity 时,RecyclerView 不显示任何内容,并且按钮不起作用。如果有人可以帮助我,我会提前感谢...谢谢

0 投票
1 回答
200 浏览

android - Android 如何实现基于箭头的布局?

我想知道如何实现这样的基于箭头的布局:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

关于什么 Layout 正在使用此应用程序以实现该布局的任何想法?这似乎是一种交错网格布局?或者也许正在使用库或自定义布局?我怎样才能实现类似的目标?

0 投票
3 回答
253 浏览

android - 使用 StaggeredGridLayout 的 RecyclerView 中的全宽页脚或最后一项

所以这很棘手。我发现最接近这个工作的是这个答案的修改版本。我使最后一个项目的高度与我想要全宽且不可见的视图相同。然后我添加一个 itemdecoration 并将其绘制在列表中的最后一项应该可见的位置,如下所示:

这种方法的问题是,当最后一个上方的 recyclerview 中的项目从视图中消失时,我能想到的值rectf.topview.top任何测量值都会发生飞跃并取代最后一个项目。

有谁知道使用 StaggeredGridLayoutManager 将全宽最后一项或页脚添加到 recyclerview 的方法?我知道它适用于 Gridlayout,但在我的情况下它不是一个选项。

或者,如果您知道一个值,它可以在屏幕上最后一个项目的正确位置而没有任何值跳转?

编辑:

我想要实现的更多细节。

在此处输入图像描述

它应该是一个 StaggeredGridLayout,在最后一项下方有一个页脚,它是全宽的,并与其余内容一起滚动。

0 投票
2 回答
206 浏览

android - 问题在 Honor 6x 中不可见项目(带有 StaggeredGridLayoutManager 的 Recyclerview)

我正在使用Recyclerview,其层为StaggeredGridLayoutManager。问题是在大多数手机中会显示项目,但在荣耀 6x 手机中不会显示项目但可以单击它们。

我将项目 rotationY:180 设置为从右到左显示。

我什至使用了GridLayoutManager但它仍然有同样的问题。

所有手机上的屏幕截图 在此处输入图像描述

在荣耀 6x 手机上 在此处输入图像描述

Recyclerview 小部件

在活动布局中

在项目布局中

在适配器 java

在 Java 活动中