电视 dpad 焦点中的水平回收视图在快速滚动时循环

Posted

技术标签:

【中文标题】电视 dpad 焦点中的水平回收视图在快速滚动时循环【英文标题】:Horizontal recyclerview in tv dpad focus going cyclic on fast scroll 【发布时间】:2018-06-16 04:47:45 【问题描述】:

我在我的电视项目中使用水平回收视图。我正在为回收视图项目设置焦点。所以我可以使用 d pad 移动。当我按正常按键时一切正常。但是当我试图在焦点到达最后一个可见的子焦点移动到第一个项目并发生循环焦点更改后,使用 dpad 快速滚动。我看到了一些解决方法,但没有什么对我有用。

【问题讨论】:

请阅读如何创建minimal reproducible example 并通过编辑将缺少的信息添加到您的帖子中:) 如果您还没有阅读How to Ask,我建议您这样做:) 我强烈推荐遵循我链接的 2 个指南,因为当帖子遵循这些指南时,SO 上的人更有可能回答问题。我特别缺少的是 - 到目前为止你尝试过什么?您面临哪些错误/问题?您是否有 coden-ps 可以显示您到目前为止尝试过的内容? 【参考方案1】:

扩展你的布局管理器并添加下面的 sn-p

@Override
public View onInterceptFocusSearch(View focused, int direction) 
    if (this.getOrientation() == HORIZONTAL) 
        if (direction == View.FOCUS_RIGHT) 
            View view = getChildAt(getChildCount() - 1);
            if (view == focused) 
                return focused;
        
    
    else if(getOrientation() == VERTICAL)
        if (direction == View.FOCUS_DOWN) 
            View view = getChildAt(getChildCount() - 1);
            if (view == focused) 
                return focused;
        
    
    return super.onInterceptFocusSearch(focused, direction);

基于方向,我正在处理正确的焦点和向下的焦点。您可以根据需要进行编辑。

【讨论】:

以上是关于电视 dpad 焦点中的水平回收视图在快速滚动时循环的主要内容,如果未能解决你的问题,请参考以下文章

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

Dpad 导航无法在 Appbarlayout 下方的 recyclerview 的电视上工作(recycler view 无法通过 dpad 获得焦点)

水平和垂直回收器视图中的滚动问题

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

Flutter 滚动视图到列上的焦点小部件

Android TV RecyclerView重点互动