【Android】实现状态栏背景透明,系统时间/图标直接显示在页面背景上

一、核心原理(关键点)

  • 让系统状态栏背景变成透明;
  • 调整状态栏文字颜色,确保和背景区分开;
  • 让页面内容可以延伸到状态栏下方;

二、实现步骤

1、在 Activity 代码中设置

  • WindowCompat.setDecorFitsSystemWindows(window, false):页面内容可以延伸到屏幕最顶端,和状态栏重叠。
  • statusBarColor:让状态栏背景完全透明。
  • isAppearanceLightStatusBars:适配浅色背景,状态栏文字黑色。
  • isStatusBarContrastEnforced: 关闭状态栏遮罩,否则状态栏会是半透明,不是全透明。
kotlin 复制代码
...
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setStatusBarTransparent(window)
    }
    
    /**
     * 设置状态栏透明,文字黑色,覆盖在页面内容上面
     */
    fun setStatusBarTransparent(window: Window) {
        // 布局可以延伸到屏幕最顶端
        WindowCompat.setDecorFitsSystemWindows(window, false)

        // 把状态栏背景设为透明
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            window.statusBarColor = Color.TRANSPARENT
        }

        // 关闭状态栏遮罩,否则状态栏会是半透明,不是全透明
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            window.isStatusBarContrastEnforced = false
        }

        // 页面布局可绘制到全屏,不受状态栏、导航栏高度限制
        window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)

        // 适配浅色背景,状态栏文字黑色
        val insetsController = WindowCompat.getInsetsController(window, window.decorView)
        insetsController.isAppearanceLightStatusBars = true
    }
}

2、XML 布局中设置 fitsSystemWindows(可选)

  • 设置 fitsSystemWindows 为 false,页面内容可以顶到屏幕最顶部,和状态栏重叠。
  • 效果类似于代码实现:WindowCompat.setDecorFitsSystemWindows(window, false)。
kotlin 复制代码
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="false"> <!-- 设为false,让内容延伸到状态栏下 -->

    <!-- 你的页面背景和内容,比如渐变背景、首页标题 -->

</androidx.constraintlayout.widget.ConstraintLayout>
相关推荐
JohnnyDeng941 小时前
【Android】Android 包体积优化:R8/ProGuard 深度配置全攻略
android·性能优化·kotlin·jetpack
故渊at1 小时前
第九板块:Android 多媒体体系 | 第二十四篇:Camera Service 与 HAL3 成像流水线
android·camera·多媒体体系·hal3
Jinkxs5 小时前
Python基础 - 初识内置函数 Python自带的便捷工具
android·java·python
私人珍藏库5 小时前
【Android】VLLO-韩国热门手机剪辑APP
android·app·工具·软件·多功能
Cloud_Shy6186 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第六章 Item 40 - 43)
android·开发语言·人工智能·笔记·python·学习方法
AFinalStone7 小时前
Android12 U盘插拔链路源码全解析(五):Framework层(下) StorageManagerService
android·frameworks
林九生8 小时前
【实用技巧】MySQL 绿色版一键路径更新脚本详解 —— update_path.bat 深度解析
android·数据库·mysql
故渊at9 小时前
第十三板块:Android 综合架构与未来演进 | 第三十一篇:Android 架构演进与 Fuchsia OS 的挑战
android·架构·宏内核·微内核·fuchsia·ipc 性能博弈
aqi009 小时前
一文速览 HarmonyOS 6.1.1 推出的十个新特性
android·华为·harmonyos·鸿蒙·harmony
matrixmind19 小时前
aiomysql:异步场景下的 MySQL 驱动
android·数据库·mysql·其他