在 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 更改为 HorizontalGridView (VerticalGridView)
将 Fragment 导入从 RecyclerView.widget.GridLayoutManager 更改为 androidx.leanback.widget.GridLayoutManager 它对我来说工作得非常快,焦点不再跳跃。
Here 一篇不错的动画文章,但有点过时了
【讨论】:
感谢您的回答,我会尝试这种方法并让您知道。 抱歉回复晚了,我试过你的建议,但问题还是一样! 现在我只是为自己做这样的任务,我会尝试着做然后告诉你 我必须将 RecyclerView 用于垂直和水平两个列表,这是我的项目要求,但我也会看看你的建议。谢谢 此视图使用相同的 RecyclerView 适配器,但需要 API 级别 >=17。以上是关于在 FireTv 应用程序的嵌套回收器视图中焦点切换到下一行的主要内容,如果未能解决你的问题,请参考以下文章
无法从 firebase 回收器视图中的 firebase 实时数据库中获取嵌套数据