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 的 innerPadding 或 WindowInsets.safeDrawing;View 中则使用窗口 Insets listener。
常见错误是同时在父子两层完整消费同一组 Insets,导致双倍留白。先决定哪一层负责系统栏,再向内容传递剩余空间。
自定义系统栏图标明暗
enableEdgeToEdge(
statusBarStyle = SystemBarStyle.auto(
lightScrim = Color.TRANSPARENT,
darkScrim = Color.TRANSPARENT,
)
)这里的 Color 是 android.graphics.Color 的整数颜色,不是 Compose Color。