我最近开始从事Jetpack的写作工作。我有以下可合成的内容:
@Composable
fun SearchScreen(navController: NavHostController) {
Scaffold(
topBar = { SearchBar() },
content = {
Column(modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())) {
Text(stringResource(id = R.string.genreFilter))
Row(
modifier = Modifier
.horizontalScroll(rememberScrollState()),
horizontalArrangement = Arrangement.spacedBy(4.dp)
) {
// some nested Composables
}
}},
)
}
但是,对于这段代码,content = {...}
中的整个代码都是用红色“Jetpack Compose: Content padding parameter it is not used
”下划线。我已经在this Stackoverflow中读到,实际上,PaddingValues
只在设置了bottomBar
的情况下才在Scaffold中提供,这里显然不是这样的。所以我不明白为什么我会犯这个错误。
注意:这个应用程序确实使用了BottomNavigation
,但不在我上面展示的Composable
中。难道这还在这里传播吗?
发布于 2022-05-02 10:08:57
因为Compose 1.2.0需要使用填充参数,然后传递给Scaffold
content
可组合。您应该将其应用于content
中最顶层的容器/视图。
content = { padding ->
Column(
modifier = Modifier
.padding(padding)
// ...
这是为了防止布局问题,例如,当脚手架有一个底部栏,而不使用此填充部分的视图将在栏下。
您可以始终使用@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
来抑制它,但是只有当您确切地知道您正在做什么时,我才建议您这样做。
发布于 2022-05-17 08:36:31
我在alpha版本中看到了一个bug,而且我使用的是SmallTopAppBar(),Scaffold没有为两个可组合的相互之间提供填充。更新后,刚刚意识到bug的修复和Scaffold本身有一个填充,所以可组合不再是在rach的其他之上。
用法:
Scaffold(topBar = { AppBar() }) { paddingValues ->
AnyComposable(modifier = Modifier.padding(paddingValues)){
}
https://stackoverflow.com/questions/72084865
复制相似问题