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

Android实现edge-to-edge效果时隐藏status bar的正确方案咨询

Android Edge-to-edge模式下隐藏状态栏的正确实现方案

第一步:修正主题配置

  • 首先移除原有<item name="android:windowFullscreen">true</item>配置,该属性会强制应用内容避开系统栏区域,与edge-to-edge的全屏布局逻辑完全冲突,是之前内容被下推的核心原因。
  • 在应用的Activity主题中添加以下配置:
<!-- 状态栏设为透明,保证布局可以延伸到该区域 -->
<item name="android:statusBarColor">@android:color/transparent</item>
<!-- 适配挖孔/刘海屏,允许内容延伸到挖孔区域 -->
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

第二步:Activity代码中配置窗口属性

在Activity的onCreate方法setContentView之前添加以下配置,同时兼容高低版本系统:

// 开启基础edge-to-edge适配(AndroidX Core 1.5+ 自带API)
EdgeToEdge.enable(this)
// 隐藏状态栏,同时允许滑动临时调出状态栏
WindowCompat.getInsetsController(window, window.decorView).run {
    hide(WindowInsetsCompat.Type.statusBars())
    // 滑动调出的状态栏会自动隐藏,不会持续遮挡内容
    systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}

// 兼容Android 10及以下版本的配置
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
    window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            or View.SYSTEM_UI_FLAG_FULLSCREEN)
}

第三步:适配布局,支持在原状态栏区域放置可点击控件

给根布局设置Insets监听,拿到状态栏高度后自定义对应区域的布局参数,示例代码如下:

ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.root_layout)) { _, insets ->
    // 获取原状态栏区域的高度
    val statusBarHeight = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top
    // 示例:给顶部自定义按钮容器设置等于状态栏高度的top padding,或者直接设置容器高度
    val topButtonContainer = findViewById<View>(R.id.top_action_container)
    topButtonContainer.setPadding(0, statusBarHeight, 0, 0)
    // 也可以直接设置容器高度为statusBarHeight,直接在该区域放置按钮
    // topButtonContainer.layoutParams.height = statusBarHeight
    topButtonContainer.requestLayout()
    // 不消费Insets,继续传递给子视图
    insets
}

做完以上三步后,应用内容会完全铺满整个屏幕,原状态栏区域可以正常放置按钮等可交互控件,不会出现内容被下推的问题。

内容的提问来源于stack exchange,提问作者Son of Stackoverflow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:03