如何在AndroidX中设置没有ActionBar的BottomNavigationView

6

我正在使用Android架构组件和Single Activity模式进行开发,采用的导航方式是BottomNavigationView。实际上,我希望父Activity没有ActionBar,但将主题设置为NoActionBar类型会导致应用程序崩溃。下面是在Activity中设置导航的方法:

val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(
    setOf(R.id.navigation_popular, R.id.navigation_top_rated, R.id.navigation_favorites)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)

如何设置底部导航栏以没有actionBar,因为我希望其中一些片段有ActionBar,例如CollapsingToolbarLayout?


2
将我的主题设置为NoActionBar类型会导致应用程序崩溃。你是如何更改主题的,或者尝试这样做了吗? - HB.
2个回答

6

我认为你已经找到了解决方案,但是对于其他人而言,如果你想在使用.NoActionBar主题时使用BottomNavigationView,则需要删除这些行:

val appBarConfiguration = AppBarConfiguration(
    setOf(R.id.navigation_popular, R.id.navigation_top_rated, R.id.navigation_favorites)
)
setupActionBarWithNavController(navController, appBarConfiguration)

这应该是一个被接受的答案。非常感谢,伙计。 - Smeet
1
这会导致内存泄漏,因为每次在底部导航中点击一个项目时,都会创建一个新的片段实例,同时保留旧的实例。 - Mena

2
使用Android Navigation BottomNavigationView。不要在清单文件中限制没有ActionBar的活动。相反,从您的活动中检索支持操作栏的实例,并使用其公共方法hide()
if (savedInstanceState == null) {
    setupBottomNavigationBar()

} // Else, need to wait for onRestoreInstanceState

supportActionBar?.hide()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接