Edge to Edge:窗口与 Insets · AndroidX 源码指南
AAndroidX 源码指南
Activity
应用基础 · androidx.activity

Edge to Edge:窗口与 Insets1.14.0-alpha01

enableEdgeToEdge 只打开绘制范围,布局仍需正确处理系统栏 Insets。

最后更新 2026-07-31

最小入口

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent { App() }
}

当前实现会根据 SDK 选择兼容实现,并最终让内容可以绘制到系统栏区域。默认状态栏使用透明色,导航栏样式包含不同版本所需的 scrim 兼容。

这不等于布局已经安全

enableEdgeToEdge() 改的是窗口策略,不会自动给任意内容加 padding。Compose 中要在真正需要避让的边界消费 Insets,例如 Scaffold 的 innerPaddingWindowInsets.safeDrawing;View 中则使用窗口 Insets listener。

常见错误是同时在父子两层完整消费同一组 Insets,导致双倍留白。先决定哪一层负责系统栏,再向内容传递剩余空间。

自定义系统栏图标明暗

enableEdgeToEdge(
    statusBarStyle = SystemBarStyle.auto(
        lightScrim = Color.TRANSPARENT,
        darkScrim = Color.TRANSPARENT,
    )
)

这里的 Colorandroid.graphics.Color 的整数颜色,不是 Compose Color