问题标签 [gridlayoutmanager]

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 投票
1 回答
4472 浏览

android - 带有 Gridlayout 管理器的回收站视图

我正在RecyclerViewGridLayout经理一起使用像旅行一样的座位预订布局。

我的问题是当我的列是随机的时如何自动检测跨度计数?

我知道spanCount = recyclerViewWidth / singleItemWidth;,但问题是singleItemWidth不同的,因为座位宽度不同。

这是我想要的所需布局:

在此处输入图像描述

...但我目前得到这样的东西:

在此处输入图像描述

这是我用来安排座位布局的代码:

...upperlist保存这些值的位置:

这是一个列表,其中行和列的值不同。因此,我需要一种适用于所有布局的通用方法。

0 投票
4 回答
8768 浏览

android - GridLayoutManager spanSizeLookup 错误

我遇到了一个问题GridLayoutManger setSpanSizeLookup,当活动的方向发生变化时,我正在更改跨度计数,同时检查特定位置是否是某种类型,这在方向变化上非常有效,我唯一的问题是,我正在使用zxing库进行条形码扫描,每当单击 a 时,button我都会打开zxing默认意图并从中检索日期,但是当zxing打开它时landscape,我当前的活动方向是portrait这给了我IllegalArgumentException布局管理仅在打开Xzing意图时抛出的问题,崩溃日志是因为
java.lang.IllegalArgumentException: Item at position 0 requires 2 spans but GridLayoutManager has only 1 spans.
如果我旋转手机,这个问题不会发生,只有在我启动时才会发生Xzing意图,我真的不知道如何解决这个问题,因为它困扰着我。这是我的spanSizeLookup-

span基于屏幕尺寸,因此可以是 1-2、2-3 和 3-4。我重复一遍,这不会给我任何关于方向更改的错误,只有当我打开zxing
PS时才会发生错误,如果我zxing intent在我的活动正在进行时打开,则landspace不会发生崩溃。

编辑

似乎只是启动了zxing导致此问题的默认意图,我有一个启动后它的去向并且activity没有发生,作为我所做的解决方法,是我创建了一个处理延迟为 1 的扫描第二个启动好像我没有那样做,它会抛出相同的。landscapeexceptionactivitybarcodeintentexception

编辑 2

我刚刚发现,即使没有 setSpanSpizeLookup,崩溃仍然会发生。只需打电话manager.setSpanCount(getResources().getInteger(R.integer.span))

0 投票
0 回答
1032 浏览

android - 毕加索作为背景图片

所以我有一个带有网格布局管理器的回收站视图(最后的图片)。每个 Item 都有一个 ImageView,可以正常工作的代码如下:

其中 vh1 是包含小部件的 RecyclerView.Adapter 的视图持有者。但我需要 ImageView 上方的渐变(见下图)。该解决方案带有另一个 Image View,它具有作为 src 的可绘制对象,即 Gradient 。为了实现这一点,我必须将第二个 ImageView(渐变)的平移设置为比第一个 ImageView 多 1dp,以便在主图像上方具有渐变。这是代码:

坡度 :

但此解决方案仅适用于 API >= Lollipop,对于 Lollipop 以下的 API 不起作用。所以我认为最好有一个 ImageView,Picasso 应该将图像作为背景加载到 ImageViewes 中,并将渐变作为 src。下面的代码:

在 XML 文件中:

在最后一个实现中,问题是加载图像太慢并且将图像与内容混淆。例如,如果有人点击第三个 ImageView 可能会显示来自第二个 Item 的内容。

我的问题是如何在不使用翻译的情况下实现一个解决方案,让所有 API 的图像都出现渐变。像这样: 在此处输入图像描述感谢您的帮助

0 投票
1 回答
1449 浏览

android - Recyclerview 显示空指针异常

我正在使用带有选项卡布局的视图寻呼机,在第三个选项卡中我使用的是一个包含 Recyclerview 的片段。现在,当我滑动标签时,当我到达第三个标签时,它显示错误,

我不知道是什么问题,正在从服务器获取数据,但应用程序崩溃了。我在谷歌中搜索了很多与该问题相关的内容,但没有得到任何有效的答案。

这是该片段中 recylerview 实现的代码。

日志猫:

08-

0 投票
3 回答
10999 浏览

android - 具有多行和多列的回收器视图 - 类似 Flow Layout [Android] 的 AutoFit

我面临构建这样的布局的挑战:

在此处输入图像描述

我的第一个见解是使用带有适配器的 RecyclerView 可以处理每个项目并扩大其布局。

到目前为止,不太好。

到目前为止,我得到了这个布局:

在此处输入图像描述

我可以感觉到我快到了,但真的......我花了一周时间思考如何让它变得更好,或者就像 UI 建议的那样。

我的一些尝试是

  1. 使用网格布局并根据列表中有多少项目更改最大列数
  2. StaggeredGridLayoutManager 听起来像是修复它并让我开心的强大候选者,但不幸的是,当我尝试使用它时,我意识到我们需要在构造函数上传递一些 spanCount (列),我找到了一些方法来解决这个限制,改变每行的列数,但我不喜欢最终结果,不像我在设置兴趣时在 Foursquare 等其他应用程序中看到的那样。
  3. 我检查了这个库Flow Layout,但我什至没有开始使用它,因为我不想失去整个回收器视图的能力,我相信有办法让它工作!.....即使知道图书馆完全符合我的需要。

伙计们,我不是在这里寻找一些已经完成的代码和平或有人来做我的工作。实际上,我正在寻找隧道尽头的光。

0 投票
1 回答
1521 浏览

android - 带有 GridLayoutManager 的 RecyclerView 插入项目位置错误

我在RecyclerView使用GridLayoutManager具有 2 个跨度的 a 时看到了奇怪的行为。

我正在尝试获取两列项目:

... 等等

为了实现这一点,我正在创建一个GridLayoutManager这样的:

最初,这表现得很完美。我的项目按我想要的顺序显示。

但是,我还需要能够从列表中删除项目,然后在用户动作足够快的情况下撤消删除。

要删除项目然后允许撤消/重新插入项目,当用户点击RecyclerView项目中的“删除”按钮时,我会执行以下逻辑。

mItems表示我的适配器中的项目列表。 position表示单击了删除按钮的项目的适配器位置。

删除项目表现完美。我能够删除项目,并且项目动画以填补空白。但是,当我尝试撤消删除并重新添加项目时,回收站视图会变得混乱并插入空白空间。例如,如果我有以下项目,并且我删除了第 2 项,那么取消删除会发生以下情况:

删除 2

加2回

此时,应该放置 3 的位置(第二行,第二列)存在一个“空”视图。如果我查询适配器的大小,我仍然得到 4 个项目,但不知何故,这些项目被分散开来总共占据 5 个位置。触摸空白没有任何作用,但是如果我重新定向/配置更改布局将返回

正如预期的那样。

难道我做错了什么?

谢谢,扎克

0 投票
1 回答
800 浏览

android - RecyclerView - ItemDecorator - 不切断项目的间距

我使用以下分隔线进行垂直线性布局,它工作得非常好:

基于此,我尝试为 a 编写相同的装饰器GridLayout,但问题是它正在切断我的项目。如下所示:

两者的结果Decorators如下(添加了调试颜色):

在此处输入图像描述

图像显示,在GridLayout项目中被切断(在项目下方的文本中很容易看到)。我应该提一下,两者的适配器是相同的,我只是使用另一个LayoutManager. 这些物品是固定尺寸的,这是我需要的!

0 投票
2 回答
3858 浏览

android - RecyclerView中的CardView没有点击效果

我正在使用RecyclerViewwithGridLayoutManager并动态添加具有此 xml 的新元素:

问题是我CardView只有在双击或长按时才能看到项目的点击效果。

我试图放置一个LinearLayout内部CardView并使其可点击android:background="?android:attr/selectableItemBackground"但结果保持不变

0 投票
1 回答
9373 浏览

android - GridLayoutManager setSpanSizeLookup 创建空白单元格

目前我正在探索更多关于 RecyclerView 和 GridLayoutManager 并试图为画廊显示实现漂亮的 UI,但我在 GridLayoutManager 的跨度大小方面遇到了一些问题。正如文档所说: 默认情况下,每个项目占用 1 个跨度。您可以通过 setSpanSizeLookup(SpanSizeLookup) 提供自定义 GridLayoutManager.SpanSizeLookup 实例来更改它。

有了这个,我希望如果我将位置 0 的项目的跨度设置为 2,它会将 colspan 和 rowspan 也设置为 2,但它似乎不是那样工作的。我将纵向的 GridLayoutManager 的列数设置为 2,横向的设置为 4。它非常适用于纵向,但不适用于横向,因为它在第二个和第三个项目下方创建了 2 个空单元格,我猜第一个项目没有获得 2 的行跨度,否则它真的留下一个空单元格。

这是我的代码:

适配器:

这是横向和纵向的结果截图:

风景

肖像

有什么办法可以避免为此设置空白单元格吗?

更新:

为了更好地可视化我正在尝试实现的目标,这是我希望横向模式的图像。数字是基于预期位置的项目。

预期结果

0 投票
1 回答
202 浏览

android - 使用 gridlayoutmanager 查看 recyclerview 中的位置

我正在使用带有 3 列的 gridlayoutmanager 的 recyclerview。我怎么知道我的视图在哪一列?