代码之家  ›  专栏  ›  技术社区  ›  Rahul

使用导航组件将不同的菜单与不同的片段绑定在一起

  •  1
  • Rahul  · 技术社区  · 8 年前

    我有一个底部导航栏的活动。

    默认情况下,我在工具栏的中间显示应用程序徽标。

    现在,当选择底部导航项时,我必须在整个工具栏上显示搜索栏。另外,我想在选择任何其他底部导航项时恢复到默认的工具栏视图(中间有一个徽标)。

    如何使用导航组件进行此操作?

    如果我必须使用viewsswitcher或actionmode,那么导航组件的整个想法将不得不放弃,因为我可以自己处理一些片段事务。

    帮我出去。

    1 回复  |  直到 8 年前
        1
  •  4
  •   ianhanniballake    8 年前

    有两种方法可以做到这一点:

    1)让每个片段实现自己的工具栏

    这种方法为您提供了每个片段所负责的最终灵活性,但是如果您有许多不同类型的片段,或者需要针对每个片段的不同滚动行为,那么这种方法更适用。

    2)使用onnavigatedListener更改活动的工具栏

    这个 NavController 允许附加任意数量的 OnNavigatedListener 实例,当当前目标/项发生更改时,将向您提供回调。

    这允许您在活动中编写代码,例如:

    navController.addOnNavigatedListener { navController, destination ->
      if (destination.id == R.id.search_destination) {
        // Update your Toolbar to be a SearchBar
      } else {
        // Reset it back to a standard Toolbar
      }
    }