我最近开始与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.我已经在this Stackoverflow Post上读到,实际上,如果设置了bottomBar,脚手架上只提供PaddingValues个,这里显然不是这样.所以我不明白为什么我会犯这个错误.

注意:该应用程序实际上使用了BottomNavigation,但不在我上面显示的Composable范围内.这是不是还在这里传播?

推荐答案

由于Compose 1.2.0(目前为alpha格式)需要使用padding参数,并将其传递到Scaffold content composable中.应将其应用于contente中最顶部的容器或其他视图:

content = { padding ->
    Column(
        modifier = Modifier
            .padding(padding)
    // ...

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

你总是可以用@SuppressLint("UnusedMaterialScaffoldPaddingParameter")来 suppress 它,但我建议只有在你确切知道自己在做什么时才这样做.

Android相关问答推荐

修改参数应该应用于哪些子元素?

我遇到了一个HashMaps对象没有存储在Firebase数据库中的问题.HashMap的一个对象put方法未被存储

Kotlin Gzip字符串未按预期工作

RemoteActivityHelper.startRemoteActivity不适用于Android Wear OS 4模拟器

泛型类型lambda函数参数作为函数参数

Android Gradle/Groovy,如何将文件复制到APK

Android系统应用程序启用编程以太网网络共享

可组合:don';t剪辑视图

如何在Jetpack Compose中向SearchBar添加边框

使用lazyColumn迁移paging3的旧代码

闪屏 API 无法在 Android 12 上运行(API 31、32)

任务:app:kaptGenerateStubsDebugKotlin执行失败. > 'compileDebugJavaWithJavac' 任务(当前目标是 1.8)

当我想使用例如 material3 时,为什么我需要添加对 material 的依赖?底部导航?

可从 Play store 下载链接访问未发布的应用

系统导航栏在某些场景下应用了深色效果

如何在 React Native 中调试网络响应

房间创建三四表关系

复用 RecyclerView 适配器,避免不必要的 API 调用

当我更改 ViewModel var 时,Kotlin + Compose 中的 Composable 不会更新

Android Compose webview 被拉伸