在 FireTv 应用程序的嵌套回收器视图中焦点切换到下一行

Posted

技术标签:

【中文标题】在 FireTv 应用程序的嵌套回收器视图中焦点切换到下一行【英文标题】:Focus switching to next row in nested recyclerview in FireTv App 【发布时间】:2021-10-05 08:51:32 【问题描述】:

在我们的 fire tv 应用中,我们使用嵌套的回收视图,其中每个垂直项目都有一个水平行作为子项目,例如 playstore design。

使用 dpad 滚动正常工作,但是当我按住右键几秒钟时,项目开始滚动非常快,因为它获得了许多事件,并且在几秒钟内焦点转到下一个随机行,即使当前行有要滚动的项目。所以这整个问题发生在水平滚动(子recyclerview)中。我已经尝试过很多解决方案,例如this、this、this。

还尝试了自定义布局管理器、自定义焦点布局和其他方法,例如减慢 recyclerview 滚动等方法,但都不起作用。

【问题讨论】:

【参考方案1】:

据我所知,这种情况发生在最后一个item处于焦点,而下一个item不可见的时刻,即ViewHolder还没有更新第一个cell的数据,所以不清楚接下来要显示哪个元素,就好像列表已经结束一样。

您需要确保至少下一个元素的边缘在屏幕上始终可见。

也许您应该使用单元格大小或分隔符。

编辑: 秘诀是使用leanback 库。这不是失去焦点!

    你的毕业典礼: // Leanback 支持

    defleaback_version = "1.2.0-alpha01" 实现(“androidx.leanback:leanback:$leanback_version”)

    布局从 RecyclerView 更改为 Horizo​​ntalGridView (VerticalGridView)

    将 Fragment 导入从 RecyclerView.widget.GridLayoutManager 更改为 androidx.leanback.widget.GridLayoutManager 它对我来说工作得非常快,焦点不再跳跃。

Here 一篇不错的动画文章,但有点过时了

【讨论】:

感谢您的回答,我会尝试这种方法并让您知道。 抱歉回复晚了,我试过你的建议,但问题还是一样! 现在我只是为自己做这样的任务,我会尝试着做然后告诉你 我必须将 RecyclerView 用于垂直和水平两个列表,这是我的项目要求,但我也会看看你的建议。谢谢 此视图使用相同的 RecyclerView 适配器,但需要 API 级别 >=17。

以上是关于在 FireTv 应用程序的嵌套回收器视图中焦点切换到下一行的主要内容,如果未能解决你的问题,请参考以下文章

无法从 firebase 回收器视图中的 firebase 实时数据库中获取嵌套数据

在使用数据绑定时如何设置嵌套的回收器视图适配器?

嵌套回收器视图高度不包含其内容

从 Firebase 中的嵌套查询填充回收站视图

当nestedscrollview 中的recyclerview 滚动时,对讲焦点转到工具栏项

RecyclerView 项目失去焦点