当使用 aNavigationView
和 aDrawLayout
时ActionBar
,jetpack
提供了一些强大的便捷方法来将所有内容连接在一起,以便这些项目更容易实现。
setupActionBarWithNavController
库中提供的方法是 ActivityNavigationUi
的扩展方法,它添加了一个汉堡按钮来打开抽屉,如果您onSupportNavigateUp:Boolean
在 Activity 上覆盖该方法以调用navigateUp(drawLayout:DrawLayout, navController:NavController)
方法,该方法会将汉堡按钮更改为后退按钮并自动返回花哨的动画,超级酷。
但是,似乎此方法的实现方式如下:
public static boolean navigateUp(@Nullable DrawerLayout drawerLayout,
@NonNull NavController navController) {
if (drawerLayout != null && navController.getCurrentDestination().getId()
== navController.getGraph().getStartDestination()) {
drawerLayout.openDrawer(GravityCompat.START);
return true;
} else {
return navController.navigateUp();
}
}
如您在此处看到的,此方法具有以下基本逻辑:
如果您不在导航图的起始目的地,则该按钮为后退按钮,否则为汉堡包按钮
这意味着只有开始目的地可以通过操作栏按钮打开绘图菜单,而所有其他目的地都有一个后退按钮,并且必须滑动才能打开绘图菜单。
为什么会这样?这似乎是 android 团队有意识的设计决定。在多个目的地提供汉堡包按钮是否令人不悦?
我想有几个主要的分支,它们有一个汉堡菜单,所有的屏幕都从那些分支中找到一个后退按钮。有没有办法实现多个NavGraphs
并将它们链接在一起NavigationView
?
u_u