我有一个 BottomNavBar
在 bottomBar
内部调用的 Scaffold
.
每个屏幕都包含一个 LazyColumn
显示一堆图像。
出于某种原因,当我完成滚动时,BottomNavBar
与项目列表的下部重叠。
我怎样才能解决这个问题?
这里是MainActivity的设置内容
SetContent{
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = "tartufozon") },
actions = {
IconButton(onClick = { Timber.d("Mail clicked") }) {
Icon(Icons.Default.Email, contentDescription = null)
}
}
)
},
bottomBar = {
BottomNavBar(navController = navController)
}
) {
BottomNavScreensController(navController = navController)
}
}
最佳答案
根据 API definition for Scaffold ,您的内部内容(您的 BottomNavScreensController
中的尾随 lambda)被赋予 PaddingValues
为您的顶部应用栏、底部栏等提供适量填充的对象。
现在,您根本没有引用该填充,因此,您的内容没有被填充。这就是导致重叠的原因。
您可以添加 Box
围绕您的BottomNavScreensController
应用填充,或将填充直接传递到您的 BottomNavScreensController
以便每个单独的屏幕都可以正确应用填充;任何一种解决方案都有效。
Scaffold(
topBar = {
//
},
bottomBar = {
//
}
) { innerPadding ->
// Apply the padding globally to the whole BottomNavScreensController
Box(modifier = Modifier.padding(innerPadding)) {
BottomNavScreensController(navController = navController)
}
}
}
关于android - 底部导航栏与 Jetpack Compose 中的屏幕内容重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66573601/