HarmonyOS鸿蒙Next中$('app.media.图标名')没效果

HarmonyOS鸿蒙Next中$(‘app.media.图标名’)没效果 如图,系统没报错,程序能正常跑,然而模拟器中对应的图标依然是默认图标,没有变成我设置的图片(白色返回箭头),新手小白求高人指教🙏🙏


更多关于HarmonyOS鸿蒙Next中$('app.media.图标名')没效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

如果图标是png就没问题了,png是什么就显示什么。

如果图标是svg,系统会根据主题深色浅色改变颜色,如果主题是深色,就改为白色,如果是浅色就改为黑色。

更多关于HarmonyOS鸿蒙Next中$('app.media.图标名')没效果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


解决了大哥们,问题没出在我写的代码,问题出在模拟器启动的时候有部分不正常,CodeGenie帮我自动修改完我重新启动跑了一遍,一切正常了,感谢各位大哥的热心帮助!🤝🏻,

开发者您好,你可以试试这样设置:

.backButtonIcon(new SymbolGlyphModifier().symbol($r('sys.symbol.chevron_backward')).color(Color.White))

.backButtonIcon(new SymbolGlyphModifier($r(‘sys.symbol.xxx’)))

试试这样,不用下载资源到本地

这里建议先确认你要改的是“页面里的图标”还是“应用桌面图标”。如果是 ArkUI 页面中显示一张本地图片,资源引用一般写成:

Image($r('app.media.xxx'))

图片放在 resources/base/media 下,xxx 是资源文件名去掉后缀。你标题里的 $(‘app.media.xxx’) 不是资源引用写法,所以即使代码能跑,也可能没有真正把这张图作为 Image 资源用起来。

如果你想做返回箭头,常见有两种方式:

  1. 用系统 Symbol/图标字体类能力,按 SymbolGlyph/系统 symbol 的方式配置颜色和大小;
  2. 用自己的 png/svg,放到 media 后通过 Image($r(‘app.media.xxx’)) 展示。

如果你说的是“桌面应用图标”,那不是在页面里改 Image 就能生效,需要检查 app/module 配置里的 icon 资源,以及应用图标要求的前景图、背景图资源是否配置完整;改完后建议 clean/rebuild,并卸载模拟器上的旧包再安装。

我做的是官网零基础入门教学里教做手持弹幕的项目,是子页面全屏弹幕的返回按钮,教程上子页面用了NavDestination容器,用了.backButtonIcon的属性方法,不是单独给页面上加个Image,我刚刚又看了教程并按照教程代码复制下来尝试还是改不了,就很奇怪,codegenie给了三个可能,1.资源路径错误,我能确认路径放对了写对了,2.图标格式需要png或svg,我也用对了,3.资源编译失败,这个就不太懂了它会失败么?这个问题可以稳定复现…🤔,

字体图标不是这么用的,你去看看文档,

鸿蒙Next已弃用$('app.media.图标名')语法,改为使用$r()函数引用资源。正确写法:this.$r('app.media.图标名')。若仍需动态加载,需通过getContext().resourceManager.getMedia($r('app.media.图标名'))方式获取。

在 HarmonyOS Next 中,$('app.media.图标名') 引用媒体资源无效通常不是代码错误,而是资源文件未正确放置或引用路径与实际不匹配。请检查:

  1. 资源目录:确保图标文件(如 icon_back.png)放在 entry/src/main/resources/base/media/ 目录下,不支持放在 rawfile 目录。
  2. 文件名大小写:资源名严格区分大小写,且必须与文件名完全一致(不含扩展名),例如文件为 white_back.png,应写为 $r('app.media.white_back')
  3. 引用方式:在 @Component 内可使用 $r('app.media.xxx'),直接 $('app.media.xxx') 是错误写法,正确的是 $r() 而非 $()
  4. 模拟器缓存:重启模拟器或执行 Clean Project 后重新运行,避免资源未刷新。
  5. 图标格式:推荐使用 PNG 或 SVG,模拟器对部分格式支持有限。
回到顶部