我正在使用androidx.navigation.ui实现导航抽屉。
基于Android Studio的导航抽屉活动模板,当我放入根据抽屉动画工作的onDrawerSlide时,appbarconfigation中设置的topLevelDesitnationIds被忽略,导航按钮(不是抽屉图标,而是后退按钮)将显示在非toplevel片段中。即使我按了键,每次抽屉还是会出来。
val drawerLayout: DrawerLayout = binding.drawerLayout
val navView: NavigationView = binding.navView
val navController = findNavController(R.id.nav_host_fragment_content_main)
//-- START : It will come out a drawer menu regardless of the fragment stack
class LocalActionBarDrawerToggle : ActionBarDrawerToggle(this,
drawerLayout,
binding.appBarMain.toolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close) {
override fun onDrawerSlide(drawerView: View, slideOffset: Float) {
// do something
super.onDrawerSlide(drawerView, slideOffset)
}
}
val drawerToggle = LocalActionBarDrawerToggle()
drawerLayout.addDrawerListener(drawerToggle)
drawerToggle.syncState()
//-- END
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_home
), drawerLayout
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
对于非顶层碎片,导航按钮是后退按钮而不是抽屉图标,所以我认为它只是覆盖了运动控制。请给我一些建议。
顶部应用栏
警告:如果你将工具栏作为参数传递给setSupportActionBar(), ActionBar将承担该工具栏的完全所有权,并且在调用之后你不能使用任何工具栏api。你可以使用对ActionBar的支持来连接ActionBar到NavController。
确保工具栏api在setSupportActionBar()之前被调用。