uni.previewimage无法直接隐藏右上角菜单,各端均无关闭配置项;微信小程序可通过longpressactions覆盖长按菜单但不隐藏三点,h5完全不支持该参数,app端需用原生插件或禁用分享功能,彻底隐藏必须放弃该api改用自定义预览器。

uni.previewImage 默认右上角菜单无法直接隐藏
uni.previewImage 是原生调起的系统级预览器,微信小程序、App、H5 各端行为不一致,但共同点是:**没有提供关闭右上角菜单(如“保存图片”“发送给朋友”)的配置项**。所谓“取消菜单”,实际只能通过限制触发条件或降级交互来规避——不是删掉它,而是让它不出现或不可用。
微信小程序端:longPressActions 会覆盖默认菜单,但仅限长按
微信小程序中,只要你在 uni.previewImage 调用时传了 longPressActions 参数,系统就会禁用默认的长按菜单(即右上角三个点点开后的“保存图片”等),改为你自定义的选项。但这只影响长按行为,不影响右上角三点本身是否显示。
-
longPressActions必须是对象,且itemList数组长度 ≥1,否则无效 - 即使只配一个空操作,也要写成:
{ itemList: [''] }(注意不能是空数组[]) - iOS 真机上,
itemList中含 emoji 或过长中文可能崩溃,建议纯简体中文、≤4 字 - H5 端完全不支持
longPressActions,该参数会被忽略,右上角菜单照常出现
App 端:可通过 nativePlugin 或禁用分享能力间接压制
App(iOS/Android)调用 uni.previewImage 时,右上角菜单由原生 WebView 控件渲染,uni-app 层无控制权。可行路径只有两条:
- 使用
uni_modules/uni-image-preview这类原生插件,它用原生 ViewPager 实现,可完全自定义 toolbar,包括隐藏全部按钮 - 在
manifest.json → App 模块配置 → Share(分享)模块中关闭「分享功能」,部分厂商 SDK 会连带隐藏分享相关入口(但不保证所有机型生效) - 不要依赖
uni.hideShareMenu()—— 它只作用于当前页面导航栏,对uni.previewImage弹层无效
真正能“去掉”的唯一方式:不用 uni.previewImage
如果你的核心诉求是彻底隐藏所有系统菜单(包括右上角三点和长按菜单),那必须放弃 uni.previewImage,改用自定义图片查看器。这意味着你要自己实现:
- 全屏
<image></image>+transform: scale()+touchmove手势逻辑 - 左右滑动切换靠
swiper或手动计算 offset,但需严格控制 DOM 数量(只渲染当前+左右各一张) - 保存图片走
uni.saveImageToPhotosAlbum,但要先校验res.index是否越界 - H5 端加
user-select: none防止误触唤起浏览器菜单
这一步绕不开——官方 API 就没留这个口子。所谓“取消菜单”,本质是在原生能力和自定义成本之间做取舍。











