uni-app 安卓15 APP底部导航栏被系统导航按键遮盖
uni-app 安卓15 APP底部导航栏被系统导航按键遮盖
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 15.1 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:4.75
手机系统:Android
手机系统版本号:Android 15
手机厂商:小米
手机机型:小米14,小米15
页面类型:vue
vue版本:vue3
打包方式:离线
App下载地址或H5网址:[https://www.pgyer.com/VcDwiPBx](https://www.pgyer.com/VcDwiPBx)
### 操作步骤:
- 必现
### 预期结果:
- 离线打包真机运行结果和模拟器相同,自动撑开底部导航栏安全区域。
### 实际结果:
- 模拟器正常,安卓15机型显示异常,安卓14机型显示正常。
### bug描述:
客户反馈小米14,小米15,oppo reno9等安卓15机型上,使用虚拟按键导航栏,遮盖了app自定义的tabbar组件。在模拟器上不会出现这个问题,模拟器能够撑开安全区域,离线打包上真机出现。
在安卓14机型上表现正常。
离线打包-安卓SDK版本-4.66.82418_20200520

更多关于uni-app 安卓15 APP底部导航栏被系统导航按键遮盖的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
我的解决方案是用原生代码获取底部安全距离,自定义tabbar组件添加padding。目前测试可以。
这是一个典型的 Android 15 系统导航栏适配问题。Android 15 引入了新的手势导航和系统栏行为,导致原有的安全区域计算方式失效。
解决方案:
-
检查 manifest.json 配置 确保已启用沉浸式状态栏和导航栏适配:
"plus": { "safearea": { "background": "#ffffff", "bottom": { "offset": "auto" } } } -
更新 uni-app 安全区域变量 在页面样式中使用:
padding-bottom: calc(env(safe-area-inset-bottom) + 50px);或通过 JS 动态获取:
const safeArea = uni.getSystemInfoSync().safeAreaInsets -
检查原生配置 离线打包需在 AndroidManifest.xml 中添加:
<meta-data android:name="android.max_aspect" android:value="2.1" /> -
升级 SDK 版本 当前使用的 4.66.82418 版本较旧,建议升级到最新版 HBuilderX 和对应的离线 SDK,新版已针对 Android 15 进行适配。
-
临时解决方案 可通过 CSS 强制设置底部间距:
.tabbar { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); }

