【问题标题】:Navigation Drawer is not operable by keyboard onlyNavigation Drawer 不能仅通过键盘操作
【发布时间】:2021-08-11 09:21:51
【问题描述】:

我基于 Android Studio 中的“Navigation Drawer Activity”模板开发了一个应用。但是,我现在发现用蓝牙键盘打开导航抽屉是不可能的。

一开始我以为我误删了代码,但是当我创建一个新项目并在没有任何更改的情况下编译它时,我发现导航抽屉确实不能用键盘操作。我还尝试了所有可能的组合键。没有成功。

由于我还没有编程经验,我不知道如何解决这个问题。

据我了解模板的代码,必须修改 MainActivity.java 中的以下代码才能解决问题。

    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    mAppBarConfiguration = new AppBarConfiguration.Builder(
            R.id.nav_home, R.id.contactFragment, R.id.imageFragment, R.id.editFieldFragment, R.id.headersFragment, R.id.contrastFragment, R.id.imageButtonFragment, R.id.tabOrderFragment)
            .setDrawerLayout(drawer)
            .build();
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(navigationView, navController);
}

如果需要,可以在这里AccessibilityDemo 找到完整的项目。

有人可以帮我解决这个问题吗?

非常感谢。

亲切的问候

佩特拉·里特

【问题讨论】:

标签: java android templates accessibility


【解决方案1】:

您可以指定key to toggle the nav menu manually,尽管这不符合一致的导航。我生成了一个新的 NavDrawer 项目,因为我无法让您的代码在我的机器上运行。

private fun toggleNav() {
    if (binding.drawerLayout.isDrawerOpen(binding.navView)) {
        binding.drawerLayout.close()
    } else {
        binding.drawerLayout.open()
    }
}

override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
    return when (keyCode) {
        KeyEvent.KEYCODE_TAB -> {
            toggleNav()
            true
        }
        else -> super.onKeyUp(keyCode, event)
    }
}

您可能会发现键盘用户使用Switch Access 辅助功能服务,它的工作原理与 TalkBack 非常相似,但没有音频反馈。在这种情况下,他们可能会以与 TalkBack 用户大致相同的方式突出显示导航菜单图标并激活它,但使用选项卡和选择而不是滑动和双击。

有趣的是,在 TalkBack 和 Switch Access 模式下,关闭菜单(不使用键盘)几乎是不可能的。它可能应该继续issue tracker

我还看了Google's keyboard navigation guide,他们似乎没有打开导航栏的键盘快捷键。

【讨论】:

  • 我现在已经根据stackoverflow.com/questions/49200720/…这个帖子解决了。但是,这种方案的缺点是当打开抽屉导航的按钮有键盘焦点时很难识别。毕竟我可能必须定义一个组合键。除非有人知道如何使键盘焦点更好地可见
  • 您能做的最好的事情就是与用户一起测试。看看他们会期待什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多