You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose组合式继承:如何传递innerPadding给子组件?

Jetpack Compose组合式继承中传递innerPadding的解决方案

你需要在子组件的content lambda中接收父组件传递过来的带innerPadding的Modifier,具体修改如下:

原问题代码

父组件:

@Composable
fun SectionScreen(
    section: Section,
    modifier: Modifier = Modifier,
    content: @Composable (modifier: Modifier) -> Unit,
) {
    Scaffold(
        modifier = modifier,
        topBar = {
            Text(text = "Top Section Header -> sectionID: ${section.sectionID}")
        },
        bottomBar = {
            Text(text = "Top Section Footer -> sectionID: ${section.sectionID}")
        }
    ) { innerPadding ->
        content(Modifier.padding(innerPadding))
    }
}

子组件:

@Composable
fun InfoSectionScreen(section: Section, modifier: Modifier = Modifier) = SectionScreen(
    section = section,
    modifier = modifier,
) {
    Column(
        modifier = modifier
    ) {
        Text(text = "Section Content -> sectionID: ${section.sectionID}")
    }
}

修改后的子组件代码

@Composable
fun InfoSectionScreen(section: Section, modifier: Modifier = Modifier) = SectionScreen(
    section = section,
    modifier = modifier,
) { contentModifier -> // 接收父组件传递的带innerPadding的Modifier
    Column(
        modifier = contentModifier // 应用这个Modifier,替代原参数的modifier
    ) {
        Text(text = "Section Content -> sectionID: ${section.sectionID}")
    }
}

说明

父组件中Scaffold会自动计算出避开顶部栏和底部栏的innerPadding,并将包含该padding的Modifier传递给content lambda。子组件只要在lambda中接收这个Modifier,再应用到自身的根布局上,就能让内容自动适配Scaffold的栏位,避免被顶部或底部栏遮挡。

内容的提问来源于stack exchange,提问作者NullPointerException

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 20:54:56