news 2026/4/22 18:17:20

HarmonyOS6 ArkTS Span组件使用文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS6 ArkTS Span组件使用文档

文章目录

    • 完整代码
    • 使用基础
      • 1 组件嵌套规则
      • 2 状态管理适配
    • 核心API
      • 1 基础文本样式属性
      • 2 文本装饰线属性:decoration
      • 3 文本阴影属性:textShadow
      • 4 文本背景属性:textBackgroundStyle
      • 5 排版控制属性:baselineOffset
      • 6 交互事件:onClick
    • 示例拆解
      • 1 示例1:文本样式、装饰、间距、大小写、点击事件
      • 2 示例2:文本阴影(多重阴影)
      • 3 示例3:背景圆角
      • 4 示例4:基线偏移
    • 总结

Span是 HarmonyOS6 中基于 ArkTS 开发的行内文本子组件,需嵌套在Text组件中使用,不支持单独渲染。

完整代码

@Entry @Component struct SpanFullDemo { @State textShadows: ShadowOptions[] = [ { radius: 10, color: Color.Red, offsetX: 10, offsetY: 0 }, { radius: 10, color: Color.Orange, offsetX: 20, offsetY: 0 }, { radius: 10, color: Color.Yellow, offsetX: 30, offsetY: 0 }, { radius: 10, color: Color.Green, offsetX: 40, offsetY: 0 }, { radius: 10, color: Color.Blue, offsetX: 50, offsetY: 0 } ]; build() { Column({ space: 12 }) { // ========== 示例1:设置文本样式 ========== Text("示例1:文本样式、装饰、间距、大小写、点击事件") .fontSize(16) .fontWeight(FontWeight.Bold); Text() { Span("行内文本") Span("组合") Span("演示!") } Text() { Span("下划线波浪").decoration({ type: TextDecorationType.Underline, color: Color.Red, style: TextDecorationStyle.WAVY }) } Text() { Span("删除线点状").decoration({ type: TextDecorationType.LineThrough, color: Color.Red, style: TextDecorationStyle.DOTTED }) } Text() { Span("上划线虚线").decoration({ type: TextDecorationType.Overline, color: Color.Red, style: TextDecorationStyle.DASHED }) } Text() { Span("字间距 -2").letterSpacing(-2) Span(" 默认间距").letterSpacing(0) Span(" 间距 3").letterSpacing(3) } Text() { Span("小写").textCase(TextCase.LowerCase) Span(" 大写").textCase(TextCase.UpperCase) } Text() { Span("常规字体").fontStyle(FontStyle.Normal) Span(" 斜体").fontStyle(FontStyle.Italic) } Text() { Span("细体").fontWeight(FontWeight.Lighter) Span(" 粗体").fontWeight(FontWeight.Bold) } Text() { Span("行高默认\n") Span("行高30").lineHeight(30) } Text() { Span("统一字体样式").font({ size: 16, weight: FontWeight.Bolder, style: FontStyle.Italic, family: "HarmonyOS Sans" }) } Text() { Span("普通文本 ") Span("可点击文本").onClick(() => { console.info("Span 被点击了!"); }).fontColor(Color.Blue) } // ========== 示例2:文本阴影 ========== Text("示例2:文本阴影(多重阴影)") .fontSize(16) .fontWeight(FontWeight.Bold) .margin({ top: 10 }); Text() { Span("彩虹阴影文字") .fontSize(30) .textShadow(this.textShadows) .fontColor(Color.White) } // ========== 示例3:文本背景样式 ========== Text("示例3:背景圆角") .fontSize(16) .fontWeight(FontWeight.Bold) .margin({ top: 10 }); Text() { Span(" 带背景圆角的Span ") .fontSize(20) .textBackgroundStyle({ color: "#7F007DFF", radius: 5 }) .fontColor(Color.White) } // ========== 示例4:基线偏移 ✅ 正确官方写法 ✅ ========== Text("示例4:基线偏移 baselineOffset") .fontSize(16) .fontWeight(FontWeight.Bold) .margin({ top: 10 }); } .width('100%') .padding(15) .backgroundColor('#fff') } }

运行效果如图:

使用基础

1 组件嵌套规则

Span非独立渲染组件,必须作为Text组件的子节点使用,单个Text可嵌套多个Span组件,实现同一行/块内不同文本片段的样式差异化,基础嵌套格式:

Text() { Span("文本片段1") // 单独样式 Span("文本片段2") // 不同样式 }

2 状态管理适配

支持与@State@Prop等 ArkTS 状态变量配合使用,示例中通过@State定义多重阴影配置数组textShadows,实现阴影样式的统一管理和动态修改。

核心API

1 基础文本样式属性

用于配置Span文本的基础字体和排版样式,支持单独配置,不影响同个Text内其他Span,核心属性如下:

属性名类型作用示例
fontSizenumber设置字体大小,单位vp.fontSize(14)
fontColorColor/string设置文本颜色,支持颜色常量/十六进制.fontColor(Color.Blue).fontColor("#FF0000")
fontStyleFontStyle设置字体样式,常规/斜体.fontStyle(FontStyle.Italic)
fontWeightFontWeight设置字重,细体/粗体等.fontWeight(FontWeight.Bold)
letterSpacingnumber设置字间距,支持正负值(负值缩小间距).letterSpacing(3).letterSpacing(-2)
lineHeightnumber设置文本行高,单位vp.lineHeight(30)
textCaseTextCase设置文本大小写转换.textCase(TextCase.UpperCase)
fontFont统一配置字体样式(大小、字重、样式、字体族).font({size:16, weight:FontWeight.Bolder, style:FontStyle.Italic, family:"HarmonyOS Sans"})

2 文本装饰线属性:decoration

配置文本的装饰线样式,支持下划线、删除线、上划线,传入TextDecorationOptions对象,支持装饰线类型、颜色、样式三重定制,参数如下:

配置项类型可选值作用
typeTextDecorationTypeUnderline(下划线)、LineThrough(删除线)、Overline(上划线)装饰线类型
colorColor/string颜色常量/十六进制装饰线颜色
styleTextDecorationStyleSolid(实线)、Dotted(点状)、Dashed(虚线)、Wavy(波浪线)装饰线样式
使用示例
Span("下划线波浪").decoration({ type: TextDecorationType.Underline, color: Color.Red, style: TextDecorationStyle.WAVY })

3 文本阴影属性:textShadow

配置文本阴影效果,支持单阴影和多重阴影,入参为ShadowOptions单个对象或数组,ShadowOptions配置项如下:

配置项类型作用
radiusnumber阴影模糊半径,值越大阴影越模糊
colorColor/string阴影颜色
offsetXnumber阴影水平偏移量,正值右移,负值左移
offsetYnumber阴影垂直偏移量,正值下移,负值上移
多重阴影示例:通过数组配置多色阴影,实现彩虹阴影效果(示例2)。

4 文本背景属性:textBackgroundStyle

为行内文本配置背景色和圆角,实现重点文本高亮效果,传入TextBackgroundStyle对象,配置项如下:

配置项类型作用示例
colorColor/string背景颜色,支持透明色(十六进制八位).color("#7F007DFF")(半透明蓝)
radiusnumber背景圆角半径,单位vp.radius(5)
使用示例
Span(" 带背景圆角的Span ").textBackgroundStyle({ color: "#7F007DFF", radius: 5 })

5 排版控制属性:baselineOffset

设置行内文本相对于基线的偏移量,实现文本上下错位排版,入参为数字类型(单位vp):

  • 正值:文本向上偏移;
  • 0:默认基线位置;
  • 负值:文本向下偏移。
    基础用法
Span("上移20").baselineOffset(20); Span("下移20").baselineOffset(-20);

6 交互事件:onClick

为单个Span文本片段绑定点击事件,实现行内文本的精准交互,点击后触发回调函数,支持日志打印、状态修改、路由跳转等操作,使用示例

Span("可点击文本").onClick(() => { console.info("Span 被点击了!"); }).fontColor(Color.Blue) // 配合颜色区分可点击文本

示例拆解

1 示例1:文本样式、装饰、间距、大小写、点击事件

整合Span基础样式和基础交互能力,实现:

  1. Span组件组合渲染行内文本;
  2. 三种装饰线(下划线/删除线/上划线)+ 四种样式(波浪/点状/虚线/实线)的定制;
  3. 字间距正负值调整、文本大小写转换;
  4. 字体样式(斜体/常规)、字重(细体/粗体)、行高的单独配置;
  5. 字体样式统一配置(font属性);
  6. 行内文本点击事件绑定,区分可点击/普通文本。

2 示例2:文本阴影(多重阴影)

通过@State定义ShadowOptions数组,配置红、橙、黄、绿、蓝五色阴影,实现多重彩虹阴影效果,演示textShadow数组入参的使用方式,适配大字体标题的视觉增强场景。

3 示例3:背景圆角

通过textBackgroundStyle配置半透明背景色和圆角,实现行内文本高亮效果,解决重点文本(如关键词、标签)的视觉突出需求,同时配合fontColor实现背景与文本的颜色对比。

4 示例4:基线偏移

演示baselineOffset属性的核心用法,通过正负值实现文本上下偏移,适用于脚注、上标/下标(如数学公式、单位标注)、行内文本错位排版等场景。

总结

  1. 嵌套限制Span仅能嵌套在Text组件中使用,不支持单独渲染,也不支持嵌套其他容器组件(如RowColumn);
  2. 样式隔离:单个Span的样式配置仅对自身生效,不影响同个Text内其他Span,实现行内样式隔离;
  3. 单位规范:所有数值型样式属性(如fontSizelineHeightradius)默认单位为vp,无需手动指定;
  4. 多重阴影:配置多重阴影时,textShadow入参为ShadowOptions数组,阴影按数组顺序叠加渲染;
  5. 透明背景:配置文本背景时,使用八位十六进制颜色值实现透明效果,前两位为透明度(00-FF),后六位为颜色值;
  6. 点击事件:为Span绑定点击事件后,建议配合fontColordecoration等属性做视觉区分,提升用户体验;
  7. 版本适配Span组件的所有高级特性(如多重阴影、文本背景)均基于 API 11+ 实现,需确保项目编译版本不低于 API 11。

HarmonyOS6 ArkTSSpan组件是实现行内文本精细化样式控制的核心子组件,通过与Text组件配合,可轻松实现富文本的行内样式差异化,其提供的装饰线、阴影、背景、基线偏移等能力,覆盖了从基础文本样式到高级视觉增强、精准交互的全场景需求。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 18:15:25

3步搞定:让老旧的PL2303串口设备在Win10/Win11上满血复活

3步搞定:让老旧的PL2303串口设备在Win10/Win11上满血复活 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 周末整理工作室,翻出一个尘封的Arduin…

作者头像 李华
网站建设 2026/4/22 18:13:46

nli-MiniLM2-L6-H768效果实测:中文法律领域测试集准确率91.2%

nli-MiniLM2-L6-H768效果实测:中文法律领域测试集准确率91.2% 1. 模型效果惊艳展示 nli-MiniLM2-L6-H768作为一款专注于自然语言推理的轻量级模型,在中文法律领域的表现令人印象深刻。经过专业测试集验证,该模型在判断句子关系任务上达到了…

作者头像 李华
网站建设 2026/4/22 18:12:17

如何高效使用鸣潮自动化工具:从零开始到精通实战

如何高效使用鸣潮自动化工具:从零开始到精通实战 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦了在《鸣潮…

作者头像 李华