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

Jetpack Compose实现状态栏透明且仅隐藏内容的方法

解决方案

要实现仅隐藏状态栏的图标/文字内容、同时保持内容延伸到透明状态栏下方的效果,不要使用insetsController.hide()(该方法会完全移除状态栏窗口导致布局下移),而是通过WindowInsetsControllerCompat的setSystemBarsAppearance方法来实现:

修改后的代码

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

    // 获取Insets控制器并配置状态栏内容隐藏
    val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)
    windowInsetsController.setSystemBarsAppearance(
        WindowInsetsControllerCompat.APPEARANCE_HIDE_STATUS_BARS,
        WindowInsetsControllerCompat.APPEARANCE_HIDE_STATUS_BARS
    )

    setContent {
        SampleApplicationTheme {
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colorScheme.background
            ) {
                Image(
                    painter = rememberAsyncImagePainter("https://picsum.photos/seed/1234/700/2000"),
                    contentDescription = "Bucket Photo",
                    modifier = Modifier.fillMaxSize(),
                    contentScale = ContentScale.Crop
                )
            }
        }
    }
}

关键说明

  • setSystemBarsAppearance仅隐藏状态栏内部的图标、文字等内容,不会移除状态栏的透明窗口区域,因此你的图片等内容会保持在状态栏下方延伸显示,充分利用整个屏幕空间。
  • 给Image添加Modifier.fillMaxSize()和contentScale = ContentScale.Crop是为了确保图片完全适配延伸后的全屏布局,可根据实际需求调整缩放方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:11:12