我在我的应用程序中使用了底部导航栏,当我使用navController启用操作栏时,在标签页之间导航时会显示向上按钮。[图1:当我在主目的地时,向上按钮消失]
navController
[图2:在选项卡之间导航时显示向上按钮]
当我删除MainActivity中的这一行时,它消失了,但随后我失去了整个应用程序的向上按钮:
MainActivity
setUpActionBarWithNavCotroller(navController)
我怎样才能使“向上按钮”disapper从底部导航标签?
db2dz4w81#
您的Tasks和Categories是top-level目的地。因此,您必须将它们分配给navController。以下是官方文档。
Tasks
Categories
top-level
初始化AppBarConfiguration,如下所示
AppBarConfiguration
val appBarConfiguration = AppBarConfiguration( topLevelDestinationIds = setOf(R.id.tasksFragment, R.id.categoriesFragment) )
使用Toolbar将它们分配给navController
Toolbar
findViewById<Toolbar>(R.id.toolbar) .setupWithNavController(navController, appBarConfiguration)
或ActionBar
ActionBar
setupActionBarWithNavController(navController, appBarConfiguration)
l3zydbqr2#
我做了一些进一步的搜索,我发现它实际上是可以设置多个顶级目的地手动,所以"向上按钮"不会显示在他们。使用AppBarConfiguration添加这些目的地。
class MainActivity : AppCompatActivity() { private lateinit var navController: NavController override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment navController = navHostFragment.navController binding.bottomNavigationView.setupWithNavController(navController) // Adding multiple top-level destinations using AppBarConfigutaion val appBarConfiguration = AppBarConfiguration(setOf(R.id.categoriesFragment, R.id.tasksFragment)) setupActionBarWithNavController(navController, appBarConfiguration) } override fun onSupportNavigateUp(): Boolean { return navController.navigateUp() || super.onSupportNavigateUp() } }
2条答案
按热度按时间db2dz4w81#
您的
Tasks
和Categories
是top-level
目的地。因此,您必须将它们分配给navController。以下是官方文档。步骤1:
初始化
AppBarConfiguration
,如下所示步骤2:
使用
Toolbar
将它们分配给navController或
ActionBar
l3zydbqr2#
我做了一些进一步的搜索,我发现它实际上是可以设置多个顶级目的地手动,所以"向上按钮"不会显示在他们。使用
AppBarConfiguration
添加这些目的地。一个月一个月