如何避免带有 Jetpack 导航和底部选项卡的向上按钮?
How to avoid the up button with jetpack navigation and bottom tabs?
我希望有类似于 YouTube 的行为:
- 有工具栏和底部标签
- 前往 "Library"(第 5 个选项卡),向上按钮未出现
- 进入"My Videos",出现向上按钮
这是我的限制条件:
- 使用喷气背包导航
- 使用
Toolbar
(如果重要的话,在 AppBarLayout
内)
- 有底部标签 (
BottomNavigationView
)
- 所有底部标签都是 "top level",因为它们不改变
Toolbar
向上按钮
- 其他应用程序屏幕不是 "top level",应该有向上箭头
- 其中一个选项卡是导航图的默认目的地
默认情况下,当全部实现后,导航由 Jetpack 导航库自动处理。我使用这个助手将工具栏与导航控制器挂钩:
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
我希望有类似于 YouTube 的行为:
- 有工具栏和底部标签
- 前往 "Library"(第 5 个选项卡),向上按钮未出现
- 进入"My Videos",出现向上按钮
这是我的限制条件:
- 使用喷气背包导航
- 使用
Toolbar
(如果重要的话,在AppBarLayout
内) - 有底部标签 (
BottomNavigationView
) - 所有底部标签都是 "top level",因为它们不改变
Toolbar
向上按钮 - 其他应用程序屏幕不是 "top level",应该有向上箭头
- 其中一个选项卡是导航图的默认目的地
默认情况下,当全部实现后,导航由 Jetpack 导航库自动处理。我使用这个助手将工具栏与导航控制器挂钩:
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