pages.json中不存在statusbar配置项;状态栏控制需通过navigationstyle设为"custom"、css变量--status-bar-height及navigationbartextstyle等组合实现,manifest.json中immersed仅控制沉浸式布局开关。

pages.json 里没有 statusBar 配置项
uni-app 的 pages.json 文件中**不存在**名为 statusBar 的直接配置项。你搜到的“设置 statusBar”相关说法,多数是混淆了平台差异或误读文档——比如把 app-plus 下的 statusbar.immersed 当成独立字段,或把小程序端的 navigationBarTextStyle 误标为状态栏控制项。
Android App 端状态栏沉浸靠 --status-bar-height + navigationStyle
真正在 App(Android)实现状态栏沉浸,核心是两件事:交出导航栏控制权、用 CSS 变量撑开内容。不是靠某个“statusBar: xxx”字段一锤定音。
-
navigationStyle必须设为"custom"(页面级或globalStyle级),否则--status-bar-height不生效 - 页面根容器(如
<view class="container"></view>)需显式写:padding-top: var(--status-bar-height); - 自定义导航栏组件(如
<uni-nav-bar></uni-nav-bar>)必须加:background-color="transparent",否则默认背景色会盖住状态栏区域 - 下拉刷新时内容会顶入状态栏导致黑屏,得配合
onPullDownRefresh临时关闭透明态,例如::class="{ 'nav-transparent': !isPulling }"
微信小程序端状态栏图标颜色由 navigationBarTextStyle 决定
小程序没有“状态栏背景色”概念,但时间、信号、电量等图标的颜色由 navigationBarTextStyle 控制,且它只在 navigationStyle: "custom" 时起效(注意:不是所有平台都支持动态切换)。
-
"white"→ 图标变白(适合深色导航栏) -
"black"→ 图标变黑(适合浅色导航栏) - 这个值写在
pages.json对应页面的style下,和navigationStyle同级 - iOS 端若发现图标颜色没变,说明你还在用
uni.setNavigationBarColor——它对 custom 模式无效,得改用uni.setStatusBarStyle('light')或'dark'
manifest.json 的 immersed: false 是关沉浸,不是配状态栏
有人在 manifest.json 里写 "immersed": false,这是**彻底禁用沉浸式布局**,让页面从状态栏下方开始渲染(顶部留白)。它和“配置状态栏”是反方向操作:
- 想沉浸 → 删掉或设
"immersed": true(默认就是 true) - 不想沉浸/避坑 → 设
false,但此时--status-bar-height值恒为 0,CSS 变量失效 - 这个配置只影响 App 端,对小程序、H5 完全无作用
真正容易被忽略的是:真机调试必须装正式打包的 APK;HBuilderX 自带模拟器不触发原生窗口 flags,测不出真实效果。











