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

问题描述

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

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

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

解决方法

据我所知,这种情况发生在最后一项获得焦点,而下一项不可见的那一刻,即ViewHolder还没有更新第一个单元格的数据,所以不清楚下一个显示哪个元素,就像列表已经结束一样。

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

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

编辑: 秘诀是使用leanback 库。它没有失去焦点!

  1. 你的毕业证书:
    // Leanback 支持

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

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

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

Here 一篇有动画但有点过时的好文章

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...