不使用内容填充参数

Content padding parameter it is not used

我最近开始使用 Jetpack Compose。我有以下可组合项:

@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。我已经在 Whosebug Post 中读到,实际上,如果设置了 bottomBarPaddingValues 只会在脚手架中提供,这显然不是这里的情况。所以我不明白为什么会出现此错误。

注意:该应用程序实际上确实使用了 BottomNavigation,但不在我上面显示的 Composable 之内。难不成这还在这儿流传?

自从 Compose 1.2.0(目前处于 alpha 阶段)以来,它需要使用填充参数,传递给 Scaffold content 可组合。您应该将其应用于 content:

中最顶层的容器或其他视图
content = { padding ->
    Column(
        modifier = Modifier
            .padding(padding)
    // ...

这样做是为了防止布局问题,例如,当脚手架有底栏时,如果不使用此填充,您的视图部分将位于栏下方。

您始终可以使用 @SuppressLint("UnusedMaterialScaffoldPaddingParameter") 来抑制它,但我建议您仅在确切知道自己在做什么时才这样做。

我在 alpha 版本中发现了一个错误,我正在使用 SmallTopAppBar() 脚手架没有为彼此重叠的两个可组合项提供填充。 更新后,才意识到错误已修复,并且 Scaffold 本身有一个填充,因此可组合项不再位于 rach other 之上。

用法:

  Scaffold(topBar = { AppBar() }) { paddingValues ->
  AnyComposable(modifier = Modifier.padding(paddingValues)){

  }