如何避免使用jetpack导航和底部选项卡的向上按钮?

Ben*_*fez 3 android android-toolbar bottomnavigationview android-jetpack android-architecture-navigation

我希望有类似YouTube的行为:

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

这是我的约束:

  • 使用jetpack导航
  • 使用ToolbarAppBarLayout如果重要的话)
  • 有底部标签(BottomNavigationView
  • 在不改变Toolbar向上按钮的意义上,所有底部标签都是“顶层”
  • 其他应用程序屏幕不是“顶层”,应该有向上箭头
  • 选项卡之一是导航图的默认目标

默认情况下,当全部实现后,Jetpack导航库将自动处理导航。我使用此助手将工具栏与导航控制器挂钩:

NavigationUI.setupWithNavController(main_toolbar, navController)
Run Code Online (Sandbox Code Playgroud)

效果很好,但是如果我切换底部标签之一,则会显示向上按钮,然后按一下会弹回到默认目标位置。

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

Ale*_*nko 6

您可以将指定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);
Run Code Online (Sandbox Code Playgroud)

更多详细信息:AppBarConfiguration