我有一个Android电视布局,如下图所示。
情境:
当第一个标签( tab0 )获得焦点时,然后在向下>向右方向按下D-pad, item2 在RecyclerView中获得焦点,按预期工作;
然后在向上方向按下D-pad, tab4 获得焦点,该焦点位于默认焦点搜索顺序之后。
问题:
我的问题是如何让 tab0 (最后关注标签)获得焦点而不是tab4。
我知道我们可以通过为每个View指定哪个控件应该通过 nextFocusUp,nextFocusUp,nextFocusLeft,nextFocusRight 属性获得焦点来定义行为。但是如何控制ViewGroup中具有不确定项目的焦点顺序。
答案 0 :(得分:0)
我最终解决了问题,如下所述:
PagerSlidingTabStrip
; ViewGroup
,这是PagerSlidingTabStrip
和ViewPager
的父视图; 覆盖dispatchKeyEvent
:
ViewGroup
方法
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (shouldInterceptDownKeyEvent(event) || shouldInterceptUpKeyEvent(event)) {
if (mTabs.getLastFocusedView() != null) {
mTabs.getLastFocusedView().requestFocus();
}
return true;
}
return super.dispatchKeyEvent(event);
}