ArkUI Text文本组件用法详解(附带实例)
Text 是文本组件,通常用于展示用户视图,如显示文章的内容。
Text 可通过 string 字符串和引用 Resource(资源)两种方式来创建。
1) 使用 string 字符串创建文本的示例代码如下:

图 1 文本组件显示效果
2) 引用 Resource 创建文本的示例代码如下:
显示效果如下图所示:

图 2 文本组件引用Resource的显示效果
1) 创建 Span。Span 组件必须写在 Text 组件内,单独使用 Span 组件不会显示信息。如果 Text 与 Span 同时配置文本内容,Span 内容将覆盖 Text 内容。示例代码如下:

图 3 包含子组件的文本组件显示效果
2) 设置文本装饰线及颜色。通过 decoration 设置文本装饰线及颜色,示例代码如下:

图 4 包含装饰线及颜色的文本组件显示效果
3) 通过 textCase 设置字母保持大写或小写,示例代码如下:

图 5 设置大写转换后的文本组件显示效果
4) 添加事件。Span 组件无尺寸信息,仅支持添加 onClick 事件。示例代码如下;

图 6 添加了事件处理的文本组件显示效果
当点击文本时,控制台输出信息如下图所示:

图 7 控制台打印的信息

图 8 Text组件的显示效果
Text 可通过 string 字符串和引用 Resource(资源)两种方式来创建。
1) 使用 string 字符串创建文本的示例代码如下:
@Entry
@Component
struct TextSample {
build() {
Row() {
Text('我是一段文本')
}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}
}
显示效果如下图所示:
图 1 文本组件显示效果
2) 引用 Resource 创建文本的示例代码如下:
@Entry
@Component
struct TextSample {
build() {
Row() {
// 通过资源引用设置显示的文本
Text($r('app.string.module_desc'))
// 设置基线偏移量为0
.baselineOffset(0)
// 设置字号
.fontSize(30)
// 设置边框
.border({ width: 1 })
// 设置内边距
.padding(10)
// 设置宽度
.width(300)
}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}
}
资源引用类型可以通过 $r 创建 Resource 类型对象,文件位置为 /resources/base/element/string.json。显示效果如下图所示:

图 2 文本组件引用Resource的显示效果
ArkUI Text添加子组件Span
Span 只能作为 Text 和 RichEditor 组件的子组件来显示文本内容。可以在一个 Text 内添加多个 Span 来显示一段信息,例如产品说明书、承诺书等。1) 创建 Span。Span 组件必须写在 Text 组件内,单独使用 Span 组件不会显示信息。如果 Text 与 Span 同时配置文本内容,Span 内容将覆盖 Text 内容。示例代码如下:
@Entry
@Component
struct TextSample {
build() {
Row() {
Text('我是Text') {
Span('我是Span')
}.padding(10).borderWidth(1)
}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}
}
显示效果如下图所示:
图 3 包含子组件的文本组件显示效果
2) 设置文本装饰线及颜色。通过 decoration 设置文本装饰线及颜色,示例代码如下:
@Entry
@Component
struct TextSample {
build() {
Row() {
Text() {
Span('我是 Span1,').fontSize(16).fontColor(Color.Grey)
// 设置贯穿装饰线,线条颜色为红色
.decoration({ type: TextDecorationType.LineThrough, color: Color.Red })
// 设置文本颜色为蓝色,字号为16
Span('我是 Span2').fontColor(Color.Blue).fontSize(16)
// 设置斜体字
.fontStyle(FontStyle.Italic)
// 设置下画线,线条颜色为黑色
.decoration({ type: TextDecorationType.Underline, color: Color.Black })
// 设置文本颜色为灰色
Span(',我是 Span3').fontSize(16).fontColor(Color.Grey)
// 设置上画线,颜色为绿色
.decoration({ type: TextDecorationType.Overline, color: Color.Green })
}.borderWidth(1).padding(10)
}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}
}
显示效果如下图所示:
图 4 包含装饰线及颜色的文本组件显示效果
3) 通过 textCase 设置字母保持大写或小写,示例代码如下:
@Entry
@Component
struct TextSample {
build() {
Row() {
Text() {
Span('I am Upper-span').fontSize(12)
// 将文本中的英文字母转换为大写字母
.textCase(TextCase.UpperCase)
}.borderWidth(1).padding(10)
}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}
}
显示效果如下图所示:
图 5 设置大写转换后的文本组件显示效果
4) 添加事件。Span 组件无尺寸信息,仅支持添加 onClick 事件。示例代码如下;
Text() {
Span('I am Upper-span').fontSize(12)
.textCase(TextCase.UpperCase)
.onClick(()=>{
console.info('我是Span——onClick')
})
}
显示效果如下图所示:
图 6 添加了事件处理的文本组件显示效果
当点击文本时,控制台输出信息如下图所示:

图 7 控制台打印的信息
ArkUI Text添加事件
Text 组件可以添加通用事件,可以绑定 onClick、onTouch 等事件来响应操作。例如:
Text('点我')
.onClick(()=>{
console.info('我是Text的点击响应事件');
})
ArkUI Text场景示例
Text 组件的应用场景示例代码如下:
@Entry
@Component
struct TextExample {
build() {
Column() {
Row() {
Text("1").fontSize(14).fontColor(Color.Red).margin({ left: 10, right: 10 })
Text("我是热搜词条 1")
.fontSize(12)
.fontColor(Color.Blue)
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.fontWeight(300)
Text("爆")
.margin({ left: 6 })
.textAlign(TextAlign.Center)
.fontSize(10)
.fontColor(Color.White)
.fontWeight(600)
.backgroundColor(0x770100)
.borderRadius(5)
.width(15)
.height(14)
}.width('100%').margin(5)
Row() {
Text("2").fontSize(14).fontColor(Color.Red).margin({ left: 10, right: 10 })
Text("我是热搜词条 2 我是热搜词条 2 我是热搜词条 2 我是热搜词条 2")
.fontSize(12)
.fontColor(Color.Blue)
.fontWeight(300)
.constraintSize({ maxWidth: 200 })
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
Text("热")
.margin({ left: 6 })
.textAlign(TextAlign.Center)
.fontSize(10)
.fontColor(Color.White)
.fontWeight(600)
.backgroundColor(0xCC5500)
.borderRadius(5)
.width(15)
.height(14)
}.width('100%').margin(5)
Row() {
Text("3").fontSize(14).fontColor(Color.Orange).margin({ left: 10, right: 10 })
Text("我是热搜词条 3")
.fontSize(12)
.fontColor(Color.Blue)
.fontWeight(300)
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
Text("热")
.margin({ left: 6 })
.textAlign(TextAlign.Center)
.fontSize(10)
.fontColor(Color.White)
.fontWeight(600)
.backgroundColor(0xCC5500)
.borderRadius(5)
.width(15)
.height(14)
}.width('100%').margin(5)
Row() {
Text("4").fontSize(14).fontColor(Color.Grey).margin({ left: 10, right: 10 })
Text("我是热搜词条 4 我是热搜词条 4 我是热搜词条 4 我是热搜词条 4")
.fontSize(12)
.fontColor(Color.Blue)
.fontWeight(300)
.constraintSize({ maxWidth: 200 })
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
Text("热")
}.width('100%')
}
}
}
显示效果如下图所示:
图 8 Text组件的显示效果
ICP备案:
公安联网备案: