uni-app Android设备屏幕圆角时底部安全区域获取为0
uni-app Android设备屏幕圆角时底部安全区域获取为0
| 信息类别 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win11 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 4.82 |
| 手机系统 | Android |
| 手机系统版本号 | Android 10 |
| 手机厂商 | 华为 |
| 手机机型 | ELE-AL00 |
| 页面类型 | vue |
| vue版本 | vue3 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
- 调用uni.getSystemInfoSync(),safeAreaInsets.bottom值为0
预期结果:
- 包含圆角处理
实际结果:
- 圆角弧度的高度
bug描述:
当屏幕无底部操作栏,但屏幕是圆角时,通过 uni.getSystemInfoSync();无法获取底部安全区域,获取到的值是0
更多关于uni-app Android设备屏幕圆角时底部安全区域获取为0的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
当屏幕无底部操作栏,但屏幕是圆角
具体描述下场景,用户是否主动隐藏了触控小白条?
更多关于uni-app Android设备屏幕圆角时底部安全区域获取为0的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是的,没有小白条
这是一个已知的Android设备兼容性问题。在部分Android机型(特别是华为等采用圆角屏幕设计的设备)上,当系统导航栏隐藏时,uni.getSystemInfoSync().safeAreaInsets.bottom 可能无法正确识别屏幕圆角区域,返回值为0。
问题分析: 安全区域计算依赖于系统提供的DisplayCutout API,但不同厂商对圆角屏幕的实现方式存在差异。在无导航栏的全屏模式下,部分Android系统可能不会将圆角区域识别为需要避让的安全区域。
临时解决方案:
- CSS媒体查询检测圆角:
/* 针对圆角屏幕的适配 */
@media (rounded-corner: 1) {
.safe-area {
padding-bottom: env(safe-area-inset-bottom, 12px);
}
}
- 手动设置安全区域高度:
const systemInfo = uni.getSystemInfoSync();
// 华为圆角设备特征检测
const isHuaweiRound = systemInfo.brand === 'HUAWEI' && systemInfo.screenHeight > systemInfo.windowHeight;
const bottomSafeArea = systemInfo.safeAreaInsets.bottom || (isHuaweiRound ? 12 : 0);
- 使用CSS常量回退:
.container {
padding-bottom: calc(env(safe-area-inset-bottom) + 12px);
padding-bottom: calc(constant(safe-area-inset-bottom) + 12px);
}

