HarmonyOS 鸿蒙Next中sys.media下图标的使用

HarmonyOS 鸿蒙Next中sys.media下图标的使用

sys.media下图标的使用Image($r('sys.media.ohos_ic_public_scan_filled'))报红,而 Image($r('sys.media.ohos_ic_public_remove_filled'))不报红,我用的DevEco Studio是最新的,用的是api19,这个网址下的很多图标都不能用 https://developer.huawei.com/consumer/cn/design/harmonyos-icon/


更多关于HarmonyOS 鸿蒙Next中sys.media下图标的使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

这句报错,是因为当前api版本下没有这个资源

cke_123.png

能在sysResource.js中找到的,说明资源存在。

建议使用

SymbolGlyph

用法如下,先看效果:

cke_5571.png

 SymbolGlyph($r("sys.symbol.AI")).fontSize(50)

打开图标符号素材库链接:HarmonyOS 主题图标库 | icon素材免费下载 | 华为开发者联盟

cke_9506.png

把复制的名字放到下面:

cke_16320.png

目前该资源库收录了433个图标,显然还很少,如果满足不了,你再打开你发的链接下载所有资源,放入你的项目目录中,通过Image组件展示。

如果对你有帮助,可以点击“采纳意见”

更多关于HarmonyOS 鸿蒙Next中sys.media下图标的使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


背景知识:

HarmonyOS Symbol 代表了 HarmonyOS 系统图标设计的一次重要演进。它通过简化的图形和直观的语义表达,不仅易于识别,同时融入了更多年轻化的设计理念,使得整体的视觉风格更加年轻和时尚。同时 HarmonyOS Symbol 还具备了字体属性,使其能够与系统字体无缝对接,确保了文本与图标的排版一致性。此外,它能够根据文本的粗细变化进行智能适配,确保了在不同文本粗细下,图标能够灵活适应,保持视觉的连贯性和一致性。

问题解决:

如下代码:

@Entry
@Component
struct ThreadPage {
    @State message: string = 'Hello World';

    build() {
        Column() {

            SymbolGlyph($r("sys.symbol.ohos_arrow_up"))
                .fontSize(26)
                .renderingStrategy(SymbolRenderingStrategy.SINGLE)
                .fontColor([Color.Black,Color.Black,Color.Yellow])

            SymbolGlyph($r("sys.symbol.worldclock"))
                .fontSize(26)
                .renderingStrategy(SymbolRenderingStrategy.SINGLE)
                .fontColor([Color.Black,Color.Black,Color.Yellow])

            SymbolGlyph($r("sys.symbol.worldclock_fill"))
                .fontSize(26)
                .renderingStrategy(SymbolRenderingStrategy.SINGLE)
                .fontColor([Color.Black,Color.Black,Color.Yellow])
        }
        .height('100%')
        .width('100%')
    }
}

以上的图片应该是在下面的网址: https://developer.huawei.com/consumer/cn/design/harmonyos-symbol/

worldclock 、worldclock_fill

测试: cke_36453.png

sys.media 路径下图标需遵循 HarmonyOS系统资源命名规范,部分图标可能仅在特定API版本中存在。楼主看下HarmonyOS系统图标库,看看图标名称与API19版本适配性。然后检查是否存在拼写错误 或 资源名称变更。

系统图标推荐通过 SymbolSpan 组件加载,支持动态调整颜色和大小。

Text() {

  SymbolSpan($r('sys.symbol.ohos_trash'))

    .fontSize(48)

    .fontColor(Color.Red)

}

使用Harmonyos Symbol

https://developer.huawei.com/consumer/cn/design/harmonyos-symbol/

// SymbolGlyph通过$r引用Resource资源来创建,目前仅支持系统预置的Symbol资源名。
// 通过fontSize属性设置SymbolGlyph的大小。
// 通过fontColor属性设置SymbolGlyph的颜色。
Row() {
  SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus'))
    .fontSize(48)
    .fontColor([Color.Black])

  SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus'))
    .fontSize(72)
    .fontColor([Color.Green])

  SymbolGlyph($r('sys.symbol.ohos_folder_badge_plus'))
    .fontSize(96)
    .fontColor([Color.Pink])
}

![](data-originheight=“649” data-originwidth=“802” src=“https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/102/485/620/0370086000102485620.20250813171337.46926263284284632511926956159624:50001231000000:2800:C39475C13123E52D17185D808D019003DE0CB34522ADEBFDA32C66B52AA76E1F.png”)

可能现在推荐用sys.symbol,media的网址里面很多都是空的

https://developer.huawei.com/consumer/cn/design/harmonyos-symbol/

cke_1704.png

在HarmonyOS Next中,sys.media下的图标属于系统预置资源,可通过$r('sys.media.ic_xxx')直接引用。图标资源路径为/resources/base/media/,支持SVG/PNG格式。使用时需声明资源依赖:在module.json5中添加"resourceDependencies": ["sys.media"]。系统图标遵循鸿蒙设计规范,尺寸适配多种设备,开发者无需处理多分辨率适配。

在HarmonyOS Next中,sys.media下的图标资源使用确实需要注意版本兼容性。根据您描述的情况,这可能是由于以下原因:

  1. 图标资源在API 19版本中可能尚未完全适配。部分图标是在较新API版本中才加入的。

  2. 建议检查以下解决方案:

    • 确认项目配置中是否正确引用了media资源包
    • 尝试清理项目并重新同步Gradle
    • 检查图标名称是否完全匹配(包括大小写)
  3. 替代方案: 可以尝试将图标文件直接放入项目的resources/base/media目录下使用,而非引用sys.media系统资源。

  4. 如果问题仍然存在,建议在DevEco Studio中查看具体的错误信息,通常会有更详细的资源缺失提示。

回到顶部