news 2026/7/17 16:30:19

HarmonyOS掌上记账APP开发实践第30篇:SymbolGlyph 与文字排版 — 鸿蒙系统的字体与图标体系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS掌上记账APP开发实践第30篇:SymbolGlyph 与文字排版 — 鸿蒙系统的字体与图标体系

SymbolGlyph 与文字排版 — 鸿蒙系统的字体与图标体系

一、引言

字体和图标是 UI 设计的基石,直接影响应用的视觉品质和用户体验。鸿蒙系统提供了 SymbolGlyph(符号字体)组件,让开发者能够方便地使用系统内置符号图标,同时提供了丰富的文字排版属性实现精细的文本控制。MoneyTrack 在我的页面中使用 SymbolGlyph 展示钻石图标,配合精美的字体排版,打造了清晰、一致的用户界面。

二、核心知识点

2.1 SymbolGlyph 符号字体

SymbolGlyph 是鸿蒙系统提供的一种特殊文本组件,用于渲染系统内置的符号图标(SF Symbols 风格)。与 Image 图片相比,SymbolGlyph 具有以下优势:

  • 矢量渲染:不失真,适配任意屏幕密度
  • 色彩灵活:支持单色和多色渲染
  • 体积小巧:不占用额外资源包大小
  • 随系统更新:新系统版本会新增符号

SymbolGlyph 支持丰富的样式属性来控制图标外观:

SymbolGlyph($r('sys.symbol.diamond')).fontSize(24)// 图标尺寸.fontColor('#FFD700')// 图标颜色.fontWeight(FontWeight.Bold)// 图标粗细.renderingMode(SymbolRenderingMode.SINGLE)// 渲染模式

renderingMode属性控制符号的着色方式,对于多色符号尤其重要:

renderingMode 取值说明适用场景
SymbolRenderingMode.SINGLE单色模式,所有图层使用同一颜色通用图标、导航栏
SymbolRenderingMode.MULTI_COLOR多色模式,保留符号原始多色设计天气、类别图标
SymbolRenderingMode.PALETTE调色板模式,可自定义各层级颜色品牌自定义配色
// 多色符号示例——保留系统默认配色SymbolGlyph($r('sys.symbol.heart')).fontSize(28).renderingMode(SymbolRenderingMode.MULTI_COLOR)// 调色板模式示例——自定义层级颜色SymbolGlyph($r('sys.symbol.share')).fontSize(24).renderingMode(SymbolRenderingMode.PALETTE).fontColor(['#FF6B6B','#4ECDC4'])// 不同层级指定不同颜色

2.2 常用系统符号列表

鸿蒙系统内置了大量常用符号,以下是在 MoneyTrack 中常用的系统符号:

系统符号资源 ID描述常用位置
sys.symbol.heart心形(可填充/轮廓切换)收藏按钮
sys.symbol.star星形评分、标记
sys.symbol.share分享符号分享按钮
sys.symbol.setting齿轮设置设置入口
sys.symbol.search搜索放大镜搜索栏
sys.symbol.diamond钻石会员等级
sys.symbol.wallet钱包资产入口
sys.symbol.chart_pie饼图统计视图

2.3 字体排版属性

ArkTS 的Text组件提供了极为丰富的排版属性。除了基本的字体大小和颜色外,还包括:

Text('¥ 12,800.00').fontSize(28).fontWeight(FontWeight.Bold).fontColor('#333333').letterSpacing(1).decoration({type:TextDecorationType.None})// 文本装饰(下划线/删除线).textCase(TextCase.Normal)// 大小写转换.textShadow({radius:2,color:'#00000020',offsetX:0,offsetY:2})// 文字阴影.lineHeight(36).textAlign(TextAlign.End)

详细属性说明

属性说明常用值
decoration文本装饰线TextDecorationType.Underline/LineThrough/Overline/None
textCase大小写转换TextCase.Normal/LowerCase/UpperCase
textShadow文字阴影设置模糊半径、颜色、偏移量
letterSpacing字间距正值扩大、负值紧缩
lineHeight行高一般设为字号的 1.2~1.5 倍

三、图标选型决策树

在 MoneyTrack 中选择图标方案时,遵循以下决策流程:

是(搜索/设置/返回/收藏)

是(应用 Logo / 品牌元素)

简单形状(勾/叉/箭头)

多色/渐变/复杂图形

需要图标展示

是否为通用系统功能?

SymbolGlyph 系统符号

是否为品牌视觉资产?

$r 图片资源(PNG/SVG)

图标复杂度如何?

Text 字符替代

$r SVG 矢量图

优点:体积小、随系统更新、矢量缩放

优点:设计可控、强品牌感

优点:零资源开销、渲染极快

优点:多色支持、不失真

四、自定义字体注册

当系统字体无法满足需求时,可以注册并使用自定义字体:

// 在 EntryAbility 或页面初始化时注册import{font}from'@kit.ArkUI'font.registerFont({familyName:'MyBrandFont',familySrc:'/fonts/mybrand-regular.ttf'})// 在组件中使用Text('品牌文案').fontFamily('MyBrandFont').fontSize(20)

五、项目代码案例

5.1 MineView 中 SymbolGlyph 钻石图标

products/entry/src/main/ets/views/mine/MineView.ets中,使用 SymbolGlyph 在"我的"页面的会员等级区域展示钻石图标:

SymbolGlyph($r('sys.symbol.diamond')).fontSize(32).fontColor('#FFD700').fontWeight(FontWeight.Bold)
  • 使用系统符号sys.symbol.diamond替代自定义图片
  • 金色#FFD700突出会员身份的尊贵感
  • 矢量渲染确保在不同屏幕密度下均清晰

5.2 金额数字排版

在账单卡片和资产卡片中,金额数字采用精细的排版控制:

  • 金额数字使用大字号(20-28sp)和 Bold 字重
  • 货币符号(¥)字号略小于数字
  • 字间距适当加大letterSpacing(1)提高可读性
  • 收入使用绿色,支出使用红色,一目了然
  • 使用textShadow增加数字立体感

5.3 图标使用策略对比

场景推荐方案原因
通用图标(搜索、设置、返回)SymbolGlyph系统内置,体积小
品牌图标(应用 Logo)$r 图片资源自定义设计,品牌化
复杂图标(带多色渐变)$r SVG 图片矢量支持,设计灵活
简单占位图标Text 字符零资源开销

六、最佳实践总结

  1. 系统符号优先:通用功能优先使用 SymbolGlyph,减少资源包体积。
  2. 符号语义化:选择与含义匹配的符号,避免误导用户。例如"删除"用垃圾桶符号而非叉号。
  3. 渲染模式按需选择:单色用于导航栏,多色保留图标原始设计,调色板模式用于品牌定制。
  4. 字体大小规范:定义统一的字体层级(如 12/14/16/18/20/24/28sp),保持设计一致性。
  5. 自定义字体谨慎使用:仅在品牌需要时注册自定义字体,过多字体会增加包体积。

七、参考文档

  • SymbolGlyph 组件 API
  • 系统符号列表
  • 字体排版指南
  • 自定义字体注册
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 16:29:33

Kimi K3深度解析:2.8万亿参数、百万上下文与开源大模型工程落地

【摘要】Kimi K3以2.8万亿参数、百万级上下文、原生视觉理解和计划开放权重进入开源大模型竞争核心区。围绕模型定位、长上下文、Coding Agent、多模态前端、推理成本、工程接入和生产风险展开分析,帮助技术团队判断它适合什么场景、如何验证效果,以及怎…

作者头像 李华
网站建设 2026/7/17 16:29:15

高效3D高斯泼溅编辑实战:SuperSplat核心技术深度解析

高效3D高斯泼溅编辑实战:SuperSplat核心技术深度解析 【免费下载链接】super-splat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/super-splat SuperSplat是一款基于Web技术的开源3D高斯泼溅编辑器,专为3D高斯泼溅数据…

作者头像 李华
网站建设 2026/7/17 16:29:10

IINA:macOS上最流畅的免费开源视频播放器终极指南

IINA:macOS上最流畅的免费开源视频播放器终极指南 【免费下载链接】iina The modern video player for macOS. 项目地址: https://gitcode.com/gh_mirrors/iin/iina 还在为macOS找不到好用的视频播放器而烦恼吗?今天我要为你介绍一款真正为苹果用…

作者头像 李华
网站建设 2026/7/17 16:27:28

LibVMI跨平台支持:Xen、KVM、Bareflank和文件模式终极对比指南

LibVMI跨平台支持:Xen、KVM、Bareflank和文件模式终极对比指南 【免费下载链接】libvmi The official home of the LibVMI project is at https://github.com/libvmi/libvmi. 项目地址: https://gitcode.com/gh_mirrors/li/libvmi LibVMI是一款强大的虚拟机内…

作者头像 李华
网站建设 2026/7/17 16:27:16

网文公众号征文AI率高怎么降?按投稿场景把AI味降下来

网文公众号征文AI率高怎么降?按投稿场景把AI味降下来 你熬了几个晚上写的东西,投出去却收到一句"疑似AI生成",我太懂那种憋屈了。可能是网文平台初审没过,可能是公众号被限流,也可能是征文比赛直接刷下来&a…

作者头像 李华