uni-app setTabBarBadge 设置角标 最后一项tabbar设置无效
uni-app setTabBarBadge 设置角标 最后一项tabbar设置无效
| 项目信息 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win7 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.2.12 |
| 手机系统 | Android |
| 手机系统版本号 | Android 12 |
| 手机厂商 | 华为 |
| 手机机型 | 华为Mate 10 Pro |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
- 打开官方项目Hello uni-app项目
- 在页面
/pages/tabBar/component/component中添加给四个tabbarItem设置角标的代码 - 运行至华为鸿蒙系统手机
预期结果:
四个tabbarItem都应出现角标
实际结果:
第四个tabbarItem未出现角标
bug描述:
使用Hello uni-app项目测试,测试代码页面/pages/tabBar/component/component
onShow(){
uni.setTabBarBadge({
index:0,
text:"20"
})
uni.setTabBarBadge({
index:1,
text:"20"
})
uni.setTabBarBadge({
index:2,
text:"20"
})
uni.setTabBarBadge({
index:3,
text:"20"
})
}
效果:只有前三项tabbr角标设置生效

相关链接:
更多关于uni-app setTabBarBadge 设置角标 最后一项tabbar设置无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
问题复现,已反馈给相关组排查,已加分,感谢您的反馈!
更多关于uni-app setTabBarBadge 设置角标 最后一项tabbar设置无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
感谢
回复 1***@qq.com: HX3.2.15+已修复该问题
这是一个已知的 uni-app 框架问题,主要出现在 Android 平台。当 TabBar 的 index 参数为最后一项(即 index 等于 tabBar.list.length - 1)时,uni.setTabBarBadge 方法可能无法正确设置角标。
问题原因:
底层原生实现中,对 TabBar 角标的索引处理可能存在边界判断错误,导致最后一个 TabBarItem 的角标渲染异常。
临时解决方案:
- 延迟设置:对最后一个 TabBarItem 的角标设置添加短暂延迟(例如使用
setTimeout)。onShow() { uni.setTabBarBadge({ index: 0, text: "20" }); uni.setTabBarBadge({ index: 1, text: "20" }); uni.setTabBarBadge({ index: 2, text: "20" }); setTimeout(() => { uni.setTabBarBadge({ index: 3, text: "20" }); }, 100); } - 使用条件编译:针对 Android 平台单独处理最后一个角标的设置逻辑。
onShow() { // #ifdef APP-PLUS if (uni.getSystemInfoSync().platform === 'android') { // Android 平台先设置前三个,延迟设置最后一个 uni.setTabBarBadge({ index: 0, text: "20" }); uni.setTabBarBadge({ index: 1, text: "20" }); uni.setTabBarBadge({ index: 2, text: "20" }); setTimeout(() => { uni.setTabBarBadge({ index: 3, text: "20" }); }, 50); } else { // 其他平台正常设置 for (let i = 0; i < 4; i++) { uni.setTabBarBadge({ index: i, text: "20" }); } } // #endif }

