在 android compose 中,有 Scaffold
可组合函数来创建包含底部导航栏的布局,还有另一个名为 BottomSheetScaffold
的函数可以创建包含底部导航栏的布局。
我的问题是如何在相同的布局中同时实现底部工作表和底部导航栏?
我尝试使用 BottomSheetScaffold 并在布局中添加底部导航栏,但是当我在同一列中使用 NavHost 时失败了。
案例的简化代码:
BottomSheetScaffold(
{ BottomSheetComposable },
topBar = {
TopAppBar()
},
sheetPeekHeight = 0.dp
) {
Column() {
NavHost(
navController,
startDestination = "route"
) {
Composable("route") {}
}
Box(
modifier = Modifier
.fillMaxWidth()
.height(60.dp)
) {
BottomNavigationBar()
}
}
}
答案 0 :(得分:1)
临时解决方案是在 scaffold
内容中使用 BottomSheetScaffold
BottomSheetScaffold(
sheetShape = BottomSheetShape,
sheetContent = {
currentBottomSheetScreen?.let {
MainBottomSheetLayout(
it, navController, textToSpeech,
closeSheet
)
}
}) {
Scaffold(
topBar = { LinguisticTopAppBar(navController, mainViewModel, openSheet) },
bottomBar = {
BottomNavigationBar(mainViewModel, navController)
},
) {
Column(modifier = Modifier.padding(it)) {
MainContent(
navController,
mainViewModel,
openSheet
)
}
}
}