1

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

4

1 回答 1

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

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

于 2018-08-09T18:41:02.397 回答