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

5 回复

问题已解决,更新一下hx的版本 4.57版本有效 需要传统打包模式 快速安心模式可能会出现错误

更多关于uni-app uni.chooseImage 方法时,如果 targetSdkVersion 设置为 35 会导致状态栏和确认按钮重叠问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我也出现这个问题了, 确实, 运行到手机上没问题, 但是快速打包就不行.
传统打包我不知道行不行, 因为它说40M超过大小限制了

这是一个已知的Android 13兼容性问题,主要是由于targetSdkVersion 35引入了新的沉浸式布局策略导致的UI重叠问题。以下是解决方案:

  1. 临时解决方案: 在manifest.json中添加以下配置:
{
  "app-plus": {
    "android": {
      "immersedStatusBar": false
    }
  }
}
  1. 长期解决方案: 等待官方更新uni-app SDK,目前DCloud团队已在处理此问题。建议关注官方更新日志。

  2. 替代方案: 可以使用uni-app的image-crop组件作为替代方案,它不受此问题影响:

uni.chooseImage({
  success: (res) => {
    uni.navigateTo({
      url: '/pages/image-crop/image-crop?src=' + res.tempFilePaths[0]
    });
  }
});
  1. 对于软键盘遮挡问题: 在页面onLoad时添加:
uni.onWindowResize((res) => {
  if (res.size.windowHeight < res.size.screenHeight) {
    // 软键盘弹出时的处理
  }
});
回到顶部