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

Jetpack Compose中隐藏状态栏时如何让内容绘制于其后方?

解决方案

要实现内容延伸至状态栏、刘海屏区域,同时隐藏状态栏图标的效果,你需要调整窗口显示策略,确保隐藏状态栏后仍保持内容全屏延伸:

修改后的MainActivity.kt代码如下:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 启用Edge-to-Edge模式,让系统栏透明
        enableEdgeToEdge()

        // 配置窗口属性,确保内容能延伸到系统栏、刘海区域
        window.apply {
            // 针对Android P及以上设备,允许内容覆盖刘海屏切口
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
            }
            // 禁用系统自动添加内边距,让内容完全填充屏幕
            decorView.fitsSystemWindows = false
        }

        // 配置沉浸式模式,隐藏状态栏图标并设置滑动唤起行为
        WindowInsetsControllerCompat(window, window.peekDecorView()).apply {
            hide(WindowInsetsCompat.Type.statusBars())
            systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
        }

        setContent {
            Box(modifier = Modifier
                .fillMaxSize()
                .background(Color.Red)) {
                Text("Hello")
            }
        }
    }
}

关键调整说明

  • decorView.fitsSystemWindows = false:关闭系统自动为内容添加的内边距适配,确保Compose内容能完全覆盖状态栏、导航栏区域。
  • layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES:让内容可以延伸到刘海屏等屏幕切口区域,避免出现未填充的黑色块。
  • 保留enableEdgeToEdge():维持系统栏的透明状态,保证内容能在系统栏后方正常显示。

调整后即可实现需求:内容全屏覆盖(含状态栏、刘海区域),状态栏图标隐藏,滑动屏幕边缘可临时唤起状态栏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:52:15