HarmonyOS 鸿蒙Next中Navigation的menus
HarmonyOS 鸿蒙Next中Navigation的menus 明明画的是透明背景,但是在menus中作为icon使用时却把它填充了,有没有不需要重写的改法,希望使用原生的属性完成设置
@Component
export default struct ListTemplate
{
@State pageTitle: string = ''
@Consume pageInfo: NavPathStack
private menu: NavigationMenuItem[] = [
{
value: '重命名',
icon: $r('app.media.Pen')
},
{
value: '删除',
icon: $r('app.media.Bin')
}
]
build()
{
NavDestination()
{
}.title(this.pageTitle)
.menus(this.menu)
.onReady((context: NavDestinationContext) => {
this.pageTitle = context.pathInfo.param as string
})
}
}
更多关于HarmonyOS 鸿蒙Next中Navigation的menus的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这边使用提供的代码,测试没有复现所述情况,考虑可能是icon图标文件的问题,有劳确认下。这边使用的是HarmonyOS图标库下载的图标:https://developer.huawei.com/consumer/cn/design/harmonyos-icon/
更多关于HarmonyOS 鸿蒙Next中Navigation的menus的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
如果图标没有问题那就在菜单项配置中强制清除颜色滤镜:
private menu: NavigationMenuItem[] = [
{
value: '重命名',
icon: $r('app.media.Pen').createPixelMap().then(pixelMap => {
Image(pixelMap).colorFilter(undefined)
})
},
{
value: '删除',
icon: $r('app.media.Bin').createPixelMap().then(pixelMap => {
Image(pixelMap).colorFilter(undefined)
})
}
]
图片换成png试试,或在其它的图片浏览软件中看看,是否为透明。
鸿蒙Next中Navigation的menus属性用于定义导航栏右侧的菜单项。通过menus参数配置菜单选项,支持文本和图标组合。菜单项点击事件通过onClick回调处理。该属性遵循鸿蒙声明式开发范式,使用组件化方式构建,与整体导航结构无缝集成。菜单样式和交互行为遵循鸿蒙设计规范。
在HarmonyOS Next的Navigation组件中,menus默认会对icon进行主题适配,包括背景填充。这是系统设计行为,目的是保持视觉一致性。
可以通过以下原生方式解决:
- 使用
icon
属性时,确保图片资源本身是透明背景且不含多余空白区域 - 检查图片资源的实际尺寸,系统可能会根据容器自动调整
- 确认图片格式支持透明度(如PNG)
目前没有直接禁用填充的原生属性。如果问题仍然存在,建议检查图片资源的具体绘制内容,确保透明度信息正确保留。