【发布时间】:2020-11-27 19:13:13
【问题描述】:
我正在使用导航图进行导航,并有一个开始屏幕(启动片段)作为显示的第一个片段。问题是当我转到主片段/屏幕时,顶部导航按钮会显示回来,而不是抽屉图标。 我们怎样才能控制它?有哪些选择。如何更改起始目的地? (如果可能)
当用户位于顶级目的地时,导航按钮 如果目的地使用 DrawerLayout,则变为抽屉图标。如果 目的地不使用 DrawerLayout,导航按钮是 隐。当用户在任何其他目的地时,导航 按钮显示为向上按钮。 配置导航按钮 仅使用起始目的地作为顶级目的地,创建 一个 AppBarConfiguration 对象,并传入对应的 导航图,如下图:
示例代码
我的问题是导航到 next_fragment 时后退按钮仍然存在。它应该显示菜单/汉堡包图标。
class MainActivity : AppCompatActivity() {
private lateinit var drawerLayout: DrawerLayout
private lateinit var appBarConfiguration : AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
drawerLayout = binding.drawerLayout
val navController = this.findNavController(R.id.mainNavigationHostFragment)
NavigationUI.setupActionBarWithNavController(this, navController)
appBarConfiguration = AppBarConfiguration(setOf(R.id.nextFragment), drawerLayout)
NavigationUI.setupWithNavController(binding.mainNavigationDrawerView, navController)
val navigationHeader = binding.mainNavigationDrawerView.getHeaderView(0)
val iconButton = navigationHeader.findViewById<ImageButton>(R.id.main_nav_icon_button)
}
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.mainNavigationHostFragment)
return NavigationUI.navigateUp(navController, appBarConfiguration)
}
}
【问题讨论】:
-
根据Principles of Navigation,您不应该使用启动画面作为您的起始目的地。
NavigationUI假设您实际上遵循了这些原则。
标签: android navigation-drawer android-navigation