Text作为最基础的文本展示组件,主要用于展示纯文本,适用于不允许编辑的场景。

一:认识Text组件

Text是文本展示的组件。Text单独使用时,所有文字作为一个整体,文字的样式保持一致,包括字号、颜色、对齐方式等,调整字体样式的接口对所有文字生效。Text支持通用属性,可以调整宽高,也支持通用事件,可以响应点击事件。Text自身也有一些接口,用来自适应调整布局,如设置最大行数、超长文本省略方式。

Text组件中的文本支持选中,选中后弹出菜单,可以全选、复制文本。

Text组件本身不是容器节点,与Column、Row等布局组件不同,只能挂载特定的子组件,如Span/ImageSpan/SymbolSpan。

二:与Text相关的组件

与Text组件关联密切的组件有:Span、ImageSpan、SymbolSpan、StyledString、MutableStyledString。这些组件都具备设置Text文本样式的能力。其中Span、ImageSpan、SymbolSpan是Text的子组件,直接添加到Text中。属性字符串StyledString/MutableStyledString通过setStyledString接口设置文本样式。

  • Span的能力是插入文本,并且可以给这一段文本设置文本样式,如字号、颜色。
  • SymbolSpan的能力是插入图标,并且具有SymbolGlyph的部分能力。
  • ImageSpan的能力是插入图片,支持Image的部分能力。

Span、SymbolSpan、ImageSpan都在Text组件内添加时,可以修改部分文本的样式、实现图文混排。但是无法实现自定义布局,Span、SymbolSpan、ImageSpan也不具备布局相关的通用属性和多数通用事件。

StyledString、MutableStyledString都称为属性字符串,MutableStyledString继承于StyledString,完全覆盖Span、SymbolSpan、ImageSpan的能力,并且可以设置更多文本样式和交互效果,拥有更丰富能力。推荐使用属性字符串。

三:可以显示文本的其他组件

ArkUI有许多能够显示文本的组件,在官网指南文本概述中有介绍。在这些组件中,按照能否编辑文本,可以分为两组:

  • 不允许编辑文本:Text、SymbolGpyph、Hyperlink、Marquee、RichText
  • 允许编辑文本:TextInput、TextArea、Search、RichEditor

四:为什么选择Text组件

“不允许编辑文本”这一类的5个组件中,SymbolGpyph、Hyperlink、Marquee、RichText的能力比较单一,只适用特定场景。如SymbolGpyph用于展示图标、Hyperlink用于创建超链接文本、Marquee用于展示跑马灯、RichText用于展示HTML格式文本。

组件 用途说明
SymbolGpyph 展示图标
Hyperlink 创建超链接文本
Marquee 展示跑马灯效果
RichText 展示HTML格式文本

Text组件的能力则非常全面,不仅可以高性能展示文本,也可以设置文本样式,如字号、文本对齐方式、最大行数,还可以完成图标展示(SymbolGpyph)、超链接文本(Hyperlink)、跑马灯(Marquee)的功能。Text组件的能力还在不断增强,而Hyperlink、Marquee逐步停止演进,在需要展示超链接、跑马灯的场景,建议开发者优先选择Text组件实现。图标展示的场景,仍然建议使用SymbolGpyph。

“允许编辑文本”这一类的5个组件,也可以把文字显示在屏幕上。尽管通过enabled接口可以让输入框变得不可编辑,但是在设置文本样式的,Text自身的功能更丰富,Text可以搭配Span、StyeldString更灵活地设置样式。在展示长文本时,Text的性能表现也比RichEditor更出色。

组件 用途说明
TextInput 编辑单行纯文本
TextArea 编辑多行纯文本
Search 编辑单行纯文本,自带搜索按钮
RichEditor 编辑富文本,可以插入图片

因此,选型的建议可以简单总结为

  • 需要编辑文本时,在TextInput、TextArea、Search、RichEditor中选择
  • 需要展示HTML格式文本时,使用RichText组件
  • 需要展示图标时,使用SymbolGlyph组件
  • 其他情况,需要展示文本时,使用Text组件
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐