代码之家  ›  专栏  ›  技术社区  ›  Benoit Duffez

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

  •  2
  • Benoit Duffez  · 技术社区  · 6 年前

    • 有一个工具栏和底部选项卡
    • 进入“我的视频”时,会出现“向上”按钮

    以下是我的限制:

    • 使用喷气背包导航
    • 使用 Toolbar (a)内部 AppBarLayout (如有必要)
    • 有底部标签( BottomNavigationView )
    • 所有底部选项卡都是“顶级”的,因为它们不会更改 工具栏 向上按钮
    • 其他应用程序屏幕不是“顶层”,应该有一个向上箭头

    默认情况下,当全部实现时,Jetpack导航库会自动处理导航。我使用以下帮助程序将工具栏与导航控制器挂钩:

    NavigationUI.setupWithNavController(main_toolbar, navController)
    

    这很好,但如果我切换底部的一个选项卡,就会出现“向上”按钮,按下它会弹出到默认目标。

    如果不使用底部选项卡,这是很好的,但如果使用底部选项卡,则会很尴尬。

    1 回复  |  直到 5 年前
        1
  •  7
  •   Denysole    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);
    

    AppBarConfiguration