android - 如何避免带有 Jetpack 导航和底部选项卡的向上按钮?

标签 android android-toolbar bottomnavigationview android-jetpack android-architecture-navigation

我希望有类似于 YouTube 的行为:

  • 有一个工具栏和底部标签
  • 转到“库”(第 5 个选项卡),向上按钮没有出现
  • 进入“我的视频”,出现向上按钮

这是我的限制条件:

  • 使用喷气背包导航
  • 使用 Toolbar(如果需要的话,在 AppBarLayout 中)
  • 有底部标签(BottomNavigationView)
  • 所有底部选项卡都是“顶级”,因为它们不会更改 Toolbar 向上按钮
  • 其他应用程序屏幕不是“顶层”,应该有向上箭头
  • 其中一个选项卡是导航图的默认目的地

默认情况下,当全部实现后,导航由 Jetpack Navigation 库自动处理。我使用这个助手将工具栏与导航 Controller Hook :

NavigationUI.setupWithNavController(main_toolbar, navController)

这很好用,但如果我切换底部选项卡之一,向上按钮会出现并按下它会弹回默认目标。

当不使用底部标签时这很好,但当它们被使用时这很尴尬。

最佳答案

您可以将 AppBarConfiguration 指定为 NavigationUI.setupWithNavController 的第三个参数。并将顶级目的地传递给它,如下所示:

Set<Integer> topLevelDestinations = new HashSet<>();
topLevelDestinations.add(R.id.navigation_home);
topLevelDestinations.add(R.id.navigation_trending);
topLevelDestinations.add(R.id.navigation_subscriptions);
topLevelDestinations.add(R.id.navigation_inbox);
topLevelDestinations.add(R.id.navigation_library);

AppBarConfiguration appBarConfiguration = new AppBarConfiguration
        .Builder(topLevelDestinations)
        .build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);

更多详情:AppBarConfiguration

关于android - 如何避免带有 Jetpack 导航和底部选项卡的向上按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249418/

相关文章:

android - public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) 没有反应

android - 如何清除 Android 中的缓存内存?

android - 在 fragment 工具栏上放置一个搜索按钮,用于某个 Activity

android-5.0-lollipop - 如何在Android的ToolBar中添加刷新、搜索等按钮?

android - 波纹效果超出BottomNavigationView边框

android - 我在退出 React Native 应用程序时遇到问题

android - 使用 ANDROIDX_TEST_ORCHESTRATOR 时未找到测试

android - 带有自定义 View 的可折叠工具栏随着滚动的发生而移动并固定(就像在留声机中一样)

android - BottomNavigationView 不存在

java - 如何在 Android 的 BottomNavigationView 中设置填充项