uni-app隐藏原生导航栏需分平台处理:小程序和h5用navigationbarhidden: true最简单有效;app端必须组合navigationstyle: "custom"与"titlenview": false,否则会出现白条、遮挡或错位。
uni-app 隐藏原生导航栏不能靠单一配置,必须按平台区分处理:小程序和 h5 用 navigationbarhidden: true 最稳;app 端必须组合 navigationstyle: "custom" + "titlenview": false,否则白条、遮挡、错位全都会出现。
小程序/H5 怎么隐藏最简单
这两个平台支持 navigationBarHidden: true,写在页面的 style 里就行,无需额外逻辑:
- 微信小程序:立即生效,顶部区域完全留空(但右上角胶囊按钮仍存在,无法移除)
- H5:隐藏 UniApp 渲染的 title 区域,不干扰浏览器地址栏(浏览器地址栏不属于 uni-app 控制范围)
- 别写成
navigationBarHidden: "true"——值必须是布尔型true,字符串会静默失效 - 如果用了
navigationStyle: "custom",navigationBarHidden就被忽略,二者不要混用
APP 端为什么 navigationBarHidden: true 没用
因为 APP 端(iOS/Android)的导航栏由原生容器(WebView 容器)控制,navigationBarHidden 这个字段压根不会被解析——它只存在于小程序和 H5 的 JS 层逻辑中。真机调试时看到导航栏还在,不是样式没生效,是根本没进原生渲染流程。
- 错误写法:
"navigationBarHidden": true单独出现在 APP 页面配置里 → 无效 - 正确写法:必须同时声明
"navigationStyle": "custom"和"titleNView": false -
navigationStyle: "custom"是“交出控制权”,不是“换个样式”;一旦设了,所有原生导航行为(返回键、下拉刷新触发区、标题渲染)全部关闭 -
titleNView: false是补漏项:某些 Android 机型(尤其 MIUI/HyperOS)即使设了 custom,仍会渲染一个空白 title 区域,造成顶部 1px 白边或内容上移错位
APP 全屏还要隐藏状态栏和虚拟导航键
只去掉原生导航栏还不够,真正的沉浸式需要连系统 UI 也收掉。这必须调用 plus API,且时机和条件极其严格:
- 必须放在
onShow(不是mounted或onLoad)—— Vue 生命周期早于 plus 环境就绪,提前调用会报plus is not defined - 必须包裹
#ifdef APP-PLUS,否则 H5 和小程序运行时报错 -
plus.navigator.setFullscreen(true)只隐藏状态栏;如需隐藏底部虚拟导航键,得额外加plus.navigator.hideSystemNavigation() - 注意:后者在部分 Android 12+ 厂商系统(如小米 HyperOS)已失效,属于系统级限制,代码再对也没用
隐藏后内容被状态栏遮挡怎么办
尤其是小程序端,navigationStyle: "custom" 一开,页面内容直接顶到屏幕最顶边,iPhone X 及以上机型会被状态栏时间图标盖住第一行文字——这不是 bug,是没预留安全区域。
- 小程序必须手动加 CSS 适配:
padding-top: env(safe-area-inset-top)到自定义顶部容器 - APP 端如果用了
setFullscreen(true),状态栏高度为 0,此时不该再加env(safe-area-inset-top),否则顶部多出空白 - 别用
margin-top: -20px这类硬调值,不同设备状态栏高度不同(iOS 通常 44px,Android 多为 25–30px),也不响应横竖屏切换 - 如果页面需要下拉刷新,
navigationStyle: "custom"会默认禁用该功能,必须显式写"enablePullDownRefresh": true并自己实现onPullDownRefresh
最易被忽略的点:APP 端的 navigationStyle: "custom" 是全局开关,它不仅影响导航栏,还会让 navigationBarTitleText、navigationBarBackgroundColor 等全部失效;而小程序里那个躲不掉的胶囊按钮,不是你漏写了什么配置,是微信强制保留的系统行为——接受它,然后把自定义导航栏高度设为 44px 并留出右侧空间,才是务实解法。











