uni-app uni.chooseImage 方法时,如果 targetSdkVersion 设置为 35 会导致状态栏和确认按钮重叠问题
uni-app uni.chooseImage 方法时,如果 targetSdkVersion 设置为 35 会导致状态栏和确认按钮重叠问题
操作步骤:
- google的 targetSdkVersion改成35
预期结果:
- 正常使用uni.chooseImage的api
实际结果:
- 如图一样会有状态栏重叠情况
bug描述:
在使用 uni.chooseImage 方法时,如果 targetSdkVersion 设置为 35,会出现以下两个问题:
- 图片选择弹窗与状态栏重叠,导致用户无法清晰看清操作区域;
- 自定义 tabbar 被软键盘遮挡,尤其在表单输入时影响严重。
这些问题在 真机调试(HBuilderX)中不会复现,但在 正式打包后安装的 APK 上会必现,说明是打包后的系统行为差异。 我们验证后发现,将 targetSdkVersion 改回 30 时,上述问题不再出现。但由于 Google Play 要求必须使用 targetSdkVersion 35 及以上,因此目前陷入兼容性冲突的困境。 初步判断可能与以下相关:
- Android 13(targetSdkVersion 33+)对窗口、状态栏、软键盘行为的限制更严格;
- uni.chooseImage 内部使用了原生弹窗机制,未适配全屏沉浸式布局;
希望官方/社区能提供以下支持:
- 对 chooseImage 组件在 targetSdkVersion 35 下的 UI 适配支持;
- 或是否可以通过 manifest 或系统 API 规避系统行为改变。
信息项 | 内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC开发环境版本 | windows11 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.29 |
手机系统 | Android |
手机系统版本 | Android 15 |
手机厂商 | 小米 |
手机机型 | 小米15 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
更多关于uni-app uni.chooseImage 方法时,如果 targetSdkVersion 设置为 35 会导致状态栏和确认按钮重叠问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题已解决,更新一下hx的版本 4.57版本有效 需要传统打包模式 快速安心模式可能会出现错误
更多关于uni-app uni.chooseImage 方法时,如果 targetSdkVersion 设置为 35 会导致状态栏和确认按钮重叠问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我也出现这个问题了, 确实, 运行到手机上没问题, 但是快速打包就不行.
传统打包我不知道行不行, 因为它说40M超过大小限制了
这是一个已知的Android 13兼容性问题,主要是由于targetSdkVersion 35引入了新的沉浸式布局策略导致的UI重叠问题。以下是解决方案:
- 临时解决方案: 在manifest.json中添加以下配置:
{
"app-plus": {
"android": {
"immersedStatusBar": false
}
}
}
-
长期解决方案: 等待官方更新uni-app SDK,目前DCloud团队已在处理此问题。建议关注官方更新日志。
-
替代方案: 可以使用uni-app的image-crop组件作为替代方案,它不受此问题影响:
uni.chooseImage({
success: (res) => {
uni.navigateTo({
url: '/pages/image-crop/image-crop?src=' + res.tempFilePaths[0]
});
}
});
- 对于软键盘遮挡问题: 在页面onLoad时添加:
uni.onWindowResize((res) => {
if (res.size.windowHeight < res.size.screenHeight) {
// 软键盘弹出时的处理
}
});