未使用内容填充参数

Ben*_*Tec 108 android android-jetpack-compose jetpack-compose-navigation

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

@Composable
fun SearchScreen(navController: NavHostController) {
    Scaffold(
        topBar = { SearchBar() },
        content = {
            Column (
                modifier = Modifier.fillMaxSize()
            ) {
                // some nested Composables
            }
        }
    )
}
Run Code Online (Sandbox Code Playgroud)

但按原样使用此代码,其中的整个代码content = {...}都用红色下划线表示Jetpack Compose: Content padding parameter it is not used。我已经在这篇Stackoverflow 帖子中读到,实际上,PaddingValues只有在设置了 的情况下才在脚手架中提供bottomBar,这显然不是这里的情况。所以我不明白为什么我会收到这个错误。

注意:该应用程序实际上确实使用了 a BottomNavigation,但不在Composable我上面显示的范围内。难道这仍然以某种方式在这里传播吗?

Phi*_*hov 224

需要使用填充参数,传递到Scaffold content可组合项中。您应该将其应用到最顶层的容器/视图content

content = { padding ->
    Column(
        modifier = Modifier
            .padding(padding)
    // ...
Run Code Online (Sandbox Code Playgroud)

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

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

  • @BenjyTec您应该将其应用到最顶层的容器,在本例中为“NavHost” (2认同)
  • @alfietap 它没有向我显示错误。确保您使用最新的 IDE 和 android gradle 插件。尝试使用相同的代码创建一个新项目,看看是否可以重现它。如果是,[报告](https://issuetracker.google.com/issues/new?component=612128) 包括此示例项目、您的 IDE 版本和示例项目。 (2认同)

小智 11

我在 alpha 版本中看到了一个错误,并且我正在使用 SmallTopAppBar() Scaffold 没有为两个可组合项提供填充,这两个可组合项彼此重叠。更新后,刚刚意识到错误已修复,并且 Scaffold 本身有一个填充,因此可组合项不再位于其他项之上。

用法:

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

  }
Run Code Online (Sandbox Code Playgroud)


小智 9

添加it关键字:

Scaffold(
        topBar = { SearchBar() },
        content = { it
            Column(modifier = Modifier
                .fillMaxSize()
                .verticalScroll(rememberScrollState()))
Run Code Online (Sandbox Code Playgroud)

这应该有效。