使用导航组件将具有不同片段的不同菜单绑定

时间:2018-10-02 21:14:28

标签: android kotlin android-toolbar android-jetpack android-architecture-navigation

我正在使用BottomNavigationBar进行活动。

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

现在,当选择bottomNavigation项之一时,我必须在整个工具栏上显示SearchBar。另外,在选择任何其他bottomNavigation项时,我想还原为默认的工具栏视图(中间带有徽标的视图)。

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

如果必须使用ViewSwitcher或ActionMode,则必须放弃导航组件的整个概念,因为我可以自己处理一些碎片事务。

在这里帮助我。

1 个答案:

答案 0 :(得分:4)

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

1)让每个Fragment都实现自己的工具栏

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

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
  }
}