在电视dpad焦点的水平的recyclerview在快速滚动循环

时间:2018-01-06 16:34:29

标签: android android-recyclerview focus android-tv d-pad

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

1 个答案:

答案 0 :(得分:1)

扩展您的布局管理器并添加以下代码段

@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);
}

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