@Composable
fun LayoutsCodelab() {
Scaffold(
topBar = {
TopAppBar(
title = {
Text(text = "LayoutsCodelab")
}
)
}
) { innerPadding ->
BodyContent(Modifier.padding(innerPadding))
}
}
删除innerPadding
不会更改任何内容。
请注意,我是编写的新手。
如果您有任何困惑,请在评论中提出
2条答案
按热度按时间mdfafbf11#
提供给内容的填充值只有在设置bottomBar参数时才能设置。遗憾的是,这没有文档记录。如果设置bottomBar,则Scaffold会将PaddingValues的底部填充设置为bottomBar内容使用的内容高度。其他填充值(start、top、end)当前设置为零。不确定将来是否会更改。
如果您的内容包含可滚动列表,并且您希望将列表底部偏移bottomBar内容的高度,则提供底部填充非常有用。如果不包括任何bottomBar内容,则PaddingValues将始终保持设置为零。
下面的示例显示了在bottomBar使用BottomAppBar时如何将PaddingValues参数传递到内容中。它显示了一个包含50个项目的列表。将填充添加到列后,可以滚动到底部并查看最后一个项目。如果删除列的填充并重复测试,则在滚动到底部时,最后几项不可见,因为Column一直延伸到脚手架底部,没有任何底部填充,并且底部应用程序栏覆盖了最后几项:
我不明白谷歌为什么不包含顶部填充。毕竟,如果包含顶部应用栏,它也会占用空间。我认为原因与顶部应用栏的折叠有关。如果顶部应用栏在滚动时折叠,内容区域需要扩展--所以在顶部添加填充可能没有意义。但如果顶部应用栏保持不变,它确实有意义。
63lcw9qa2#
根据文件
contentlambda接收PaddingValues的示例,该示例应该应用于内容根-例如,通过Modifier.padding -以偏移顶部和底部条(如果它们存在的话)。