Gia*_*chi 19 android android-jetpack android-jetpack-compose
我有一个在 aBottomNavBar中被调用bottomBar的 a 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)
}
}
Run Code Online (Sandbox Code Playgroud)
ian*_*ake 32
根据Scaffold的API 定义,您的内部内容(您所在的尾随 lambda BottomNavScreensController)被赋予一个PaddingValues对象,该对象为您的顶部应用栏、底部栏等提供适量的填充。
现在,您根本没有引用该填充,因此,您的内容没有被填充。这就是导致重叠的原因。
您可以Box在您的周围添加一个BottomNavScreensController以应用填充,或将填充直接传递给您的,BottomNavScreensController以便每个单独的屏幕都可以正确应用填充;两种解决方案都有效。
Scaffold(
topBar = {
//
},
bottomBar = {
//
}
) { innerPadding ->
// Apply the padding globally to the whole BottomNavScreensController
Box(modifier = Modifier.padding(innerPadding)) {
BottomNavScreensController(navController = navController)
}
}
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*nde 13
遵循ianhanniballake的回答及其评论,只是为了节省您几分钟的时间。代码类似于:
Scaffold(
topBar = {
//
},
bottomBar = {
//
}
) { innerPadding ->
Box(modifier = Modifier.padding(
PaddingValues(bottom = innerPadding.calculateBottomPadding()) {
BottomNavScreensController(navController = navController)
}
}
}
Run Code Online (Sandbox Code Playgroud)
您不再需要进行任何计算。在脚手架内容中,执行以下操作:
content = { padding ->
Column(
modifier = Modifier.padding(padding)
) {...
Run Code Online (Sandbox Code Playgroud)
Scaffold(
bottomBar = {
BottomNavigationBar(navController = navController)
}
) { innerPadding ->
Box(modifier = Modifier.padding(innerPadding)) {
DestinationsNavHost(
navGraph = NavGraphs.root,
navController = navController,
engine = navHostEngine
)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |