问题标签 [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.
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 的扫描第二个启动好像我没有那样做,它会抛出相同的。landscape
exception
activity
barcode
intent
exception
编辑 2
我刚刚发现,即使没有 setSpanSpizeLookup,崩溃仍然会发生。只需打电话manager.setSpanCount(getResources().getInteger(R.integer.span))
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 的内容。
android - Recyclerview 显示空指针异常
我正在使用带有选项卡布局的视图寻呼机,在第三个选项卡中我使用的是一个包含 Recyclerview 的片段。现在,当我滑动标签时,当我到达第三个标签时,它显示错误,
我不知道是什么问题,正在从服务器获取数据,但应用程序崩溃了。我在谷歌中搜索了很多与该问题相关的内容,但没有得到任何有效的答案。
这是该片段中 recylerview 实现的代码。
日志猫:
08-
android - 具有多行和多列的回收器视图 - 类似 Flow Layout [Android] 的 AutoFit
我面临构建这样的布局的挑战:
我的第一个见解是使用带有适配器的 RecyclerView 可以处理每个项目并扩大其布局。
到目前为止,不太好。
到目前为止,我得到了这个布局:
我可以感觉到我快到了,但真的......我花了一周时间思考如何让它变得更好,或者就像 UI 建议的那样。
我的一些尝试是
- 使用网格布局并根据列表中有多少项目更改最大列数
- StaggeredGridLayoutManager 听起来像是修复它并让我开心的强大候选者,但不幸的是,当我尝试使用它时,我意识到我们需要在构造函数上传递一些 spanCount (列),我找到了一些方法来解决这个限制,改变每行的列数,但我不喜欢最终结果,不像我在设置兴趣时在 Foursquare 等其他应用程序中看到的那样。
- 我检查了这个库Flow Layout,但我什至没有开始使用它,因为我不想失去整个回收器视图的能力,我相信有办法让它工作!.....即使知道图书馆完全符合我的需要。
伙计们,我不是在这里寻找一些已经完成的代码和平或有人来做我的工作。实际上,我正在寻找隧道尽头的光。
android - 带有 GridLayoutManager 的 RecyclerView 插入项目位置错误
我在RecyclerView
使用GridLayoutManager
具有 2 个跨度的 a 时看到了奇怪的行为。
我正在尝试获取两列项目:
... 等等
为了实现这一点,我正在创建一个GridLayoutManager
这样的:
最初,这表现得很完美。我的项目按我想要的顺序显示。
但是,我还需要能够从列表中删除项目,然后在用户动作足够快的情况下撤消删除。
要删除项目然后允许撤消/重新插入项目,当用户点击RecyclerView
项目中的“删除”按钮时,我会执行以下逻辑。
mItems
表示我的适配器中的项目列表。 position
表示单击了删除按钮的项目的适配器位置。
删除项目表现完美。我能够删除项目,并且项目动画以填补空白。但是,当我尝试撤消删除并重新添加项目时,回收站视图会变得混乱并插入空白空间。例如,如果我有以下项目,并且我删除了第 2 项,那么取消删除会发生以下情况:
删除 2
加2回
此时,应该放置 3 的位置(第二行,第二列)存在一个“空”视图。如果我查询适配器的大小,我仍然得到 4 个项目,但不知何故,这些项目被分散开来总共占据 5 个位置。触摸空白没有任何作用,但是如果我重新定向/配置更改布局将返回
正如预期的那样。
难道我做错了什么?
谢谢,扎克
android - RecyclerView中的CardView没有点击效果
我正在使用RecyclerView
withGridLayoutManager
并动态添加具有此 xml 的新元素:
问题是我CardView
只有在双击或长按时才能看到项目的点击效果。
我试图放置一个LinearLayout
内部CardView
并使其可点击android:background="?android:attr/selectableItemBackground"
但结果保持不变
android - GridLayoutManager setSpanSizeLookup 创建空白单元格
目前我正在探索更多关于 RecyclerView 和 GridLayoutManager 并试图为画廊显示实现漂亮的 UI,但我在 GridLayoutManager 的跨度大小方面遇到了一些问题。正如文档所说: 默认情况下,每个项目占用 1 个跨度。您可以通过 setSpanSizeLookup(SpanSizeLookup) 提供自定义 GridLayoutManager.SpanSizeLookup 实例来更改它。
有了这个,我希望如果我将位置 0 的项目的跨度设置为 2,它会将 colspan 和 rowspan 也设置为 2,但它似乎不是那样工作的。我将纵向的 GridLayoutManager 的列数设置为 2,横向的设置为 4。它非常适用于纵向,但不适用于横向,因为它在第二个和第三个项目下方创建了 2 个空单元格,我猜第一个项目没有获得 2 的行跨度,否则它真的留下一个空单元格。
这是我的代码:
适配器:
这是横向和纵向的结果截图:
有什么办法可以避免为此设置空白单元格吗?
更新:
为了更好地可视化我正在尝试实现的目标,这是我希望横向模式的图像。数字是基于预期位置的项目。
android - 使用 gridlayoutmanager 查看 recyclerview 中的位置
我正在使用带有 3 列的 gridlayoutmanager 的 recyclerview。我怎么知道我的视图在哪一列?