gpt4 book ai didi

android - 控制具有不确定项目的 ViewGroup 之间的焦点顺序

转载 作者:行者123 更新时间:2023-12-05 07:50:40 26 4
gpt4 key购买 nike

我有一个 Android TV 布局,如下图所示。

  1. 顶部一个PagerSlidingTabStrip,从服务器拉取数据;
  2. 底部有 Fragment 的 ViewPager,每个 Fragment 都有一个水平的 RecyclerView。

场景:

当第一个选项卡 (tab0) 获得焦点时,然后按向下->向右方向的方向键,item2 RecyclerView 获得焦点,按预期工作;

然后按向上方向的方向键,tab4获得焦点,这遵循默认的焦点搜索顺序。

问题:

我的问题是如何让 tab0(最后获得焦点的标签)获得焦点而不是 tab4。

我知道我们可以通过为每个 View 指定接下来应该使用 nextFocusUp、nextFocusUp、nextFocusLeft、nextFocusRight 属性获得焦点的控件来定义行为。但是对于我来说,如何控制具有不确定项目的ViewGroup之间的焦点顺序。

enter image description here

最佳答案

最后我解决了这个问题,描述如下:

  1. PagerSlidingTabStrip 中保留最后一个聚焦 View 的引用;
  2. 创建一个自定义的ViewGroup,它是PagerSlidingTabStripViewPager的父 View ;
  3. 重写 ViewGroup 中的 dispatchKeyEvent 方法:

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
    if (shouldInterceptDownKeyEvent(event) || shouldInterceptUpKeyEvent(event)) {
    if (mTabs.getLastFocusedView() != null) {
    mTabs.getLastFocusedView().requestFocus();
    }
    return true;
    }
    return super.dispatchKeyEvent(event);
    }

关于android - 控制具有不确定项目的 ViewGroup 之间的焦点顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35937647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com