【发布时间】:2020-12-01 23:16:16
【问题描述】:
如何根据导航控制器中的实际位置使用Scaffold 在TopAppBar 中显示导航图标(BackArrow 或 Menu)?我正在使用Navigating with Compose 1.0.0-alpha02。下面是一个示例代码,描述了它应该如何工作
@Composable
fun App()
{
val navController = rememberNavController()
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = "App title") },
navigationIcon = {
/*
Check if navController back stack has more
than one element. If so show BackButton.
Clicking on that button will move back
*/
val canMoveBack = true
if (canMoveBack)
{
IconButton(onClick = {
// Move back
navController.popBackStack()
}) {
Icon(asset = Icons.Outlined.ArrowBack)
}
}
else
{
IconButton(onClick = {
// show NavDrawer
}) {
Icon(asset = Icons.Outlined.Menu)
}
}
},
)
},
bodyContent = {
AppBody(navController)
}
)
}
我想过类似navController.backStack.size 的东西,但我收到错误NavController.getBackStack can only be called from within the same library group (groupId=androidx.navigation)。
第二个问题,如果我想更改 TopAppBar 文本,我是否必须提升此文本并为每个“屏幕”提供更改此文本的可能性,或者是否有任何简单的内置方法可以做到这一点在标准视图系统中?
【问题讨论】:
标签: android kotlin android-jetpack-navigation android-jetpack-compose