我在电视项目中使用水平回收器视图。我正在为回收器视图项目设置可聚焦。所以有了d键,我可以移动。当我做正常的按键时,一切正常。但是当我尝试在焦点到达最后一个可见的子焦点移动到第一项并发生循环焦点变化后使用 dpad 进行快速滚动时。我看到了一些解决方法,但没有任何效果对我有用。
扩展布局管理器并添加以下代码片段
@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);
}
根据方向,我正在处理正确的焦点和向下的焦点。您可以根据需要进行编辑。