找回密码
 立即注册
首页 业界区 业界 鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&Text ...

鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&TextInput

狭踝仇 2025-9-22 08:22:13
大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解文本组件Text和TextInput的使用。
一、文本Text

1.1 概述

Text为文本组件,用于显示文字内容。
1.2 参数

Text组件的参数类型为string | Resource,下面分别对两个参数类型进行介绍:

  • string类型
  1. Text('我是一段文本')
复制代码

  • Resource 类型
Resource类型的参数用于引用 resources/*/element目录中定义的字符串,同样需要使用$r()引用。
例如resources/base/element目录中有一个string.json文件,内容如下
  1. {
  2.   "string": [
  3.     {
  4.       "name": "greeting",
  5.       "value": "你好"
  6.     }
  7.   ]
  8. }
复制代码
此时我们便可通过如下方式引用并显示greeting的内容。
  1. Text($r('app.string.greeting'))
复制代码
示例代码:
1、分别在resources下的base、en_US、zh_CN目录下的element下的string.json中添加对应的配置
在base和zh_CN下的element下的string.json中添加
  1. {
  2.       "name": "greeting",
  3.       "value": "你好,鸿蒙"
  4.     }
复制代码
在en_US目录下的element下的string.json中添加
  1. {
  2.       "name": "greeting",
  3.       "value": "hello,harmony"
  4.     }
复制代码
2、component目录下新建text目录,新建TextParameterPage.ets文件
  1. @Entry
  2. @Component
  3. // text组件
  4. struct TextParameterPage {
  5.   build() {
  6.     Column({ space: 50 }) {
  7.       // text组件参数
  8.       //1、字符串类型
  9.       Text('你好,鸿蒙')
  10.         .fontSize(50)
  11.       //2、Resource类型
  12.       Text($r('app.string.greeting'))
  13.         .fontSize(50)
  14.     }.width('100%')
  15.     .height('100%')
  16.     .justifyContent(FlexAlign.Center)
  17.   }
  18. }
复制代码
1.3 常用属性

1.3.1 字体大小

字体大小可通过fontSize()方法进行设置,该方法的参数类型为string | number| Resource,下面逐一介绍

  • string类型
string类型的参数可用于指定字体大小的具体单位,例如fontSize('100px'),字体大小的单位支持px、fp。其中fp(font pixel)与vp类似,具体大小也会随屏幕的像素密度变化而变化。

  • number类型
number类型的参数,默认以fp作为单位。

  • Resource类型
Resource类型参数用于引用resources下的element目录中定义的数值。
示例代码:
在component/text目录下新建FontSizePage.ets文件
  1. @Entry
  2. @Component
  3. // text属性:字体大小
  4. struct FontSizePage {
  5.   build() {
  6.       Column({ space: 50 }) {
  7.         // 1、参数为string类型
  8.         Text('你好,鸿蒙')
  9.           .fontSize('150px')
  10.         Text('你好,鸿蒙')
  11.           .fontSize('50fp')
  12.         // 2、参数为number类型
  13.         Text('你好,鸿蒙')
  14.           .fontSize(50)
  15.       }.width('100%')
  16.       .height('100%')
  17.       .justifyContent(FlexAlign.Center)
  18.   }
  19. }
复制代码
1.3.2 字体粗细

字体粗细可通过fontWeight()方法进行设置,该方法参数类型为number | FontWeight | string,下面逐一介绍

  • number类型
number类型的取值范围是[100,900],取值间隔为100,默认为400,取值越大,字体越粗。

  • FontWeight类型
FontWeight为枚举类型,可选枚举值如下
名称描述FontWeight.Lighter字体较细。FontWeight.Normal字体粗细正常。FontWeight.Regular字体粗细正常。FontWeight.Medium字体粗细适中。FontWeight.Bold字体较粗。FontWeight.Bolder字体非常粗。

  • string类型
string类型的参数仅支持number类型和FontWeight类型参数的字符串形式,例如例如'100'和bold。
示例代码:
在component/text下新建FontWeightPage.ets文件
  1. @Entry
  2. @Component
  3. // 字体粗细
  4. struct FontWeightPage {
  5.   build() {
  6.     Column({ space: 50 }) {
  7.       //默认效果
  8.       Text('你好,鸿蒙')
  9.         .fontSize(50)
  10.       // 1、number类型
  11.       Text('你好,鸿蒙')
  12.         .fontSize(50)
  13.         .fontWeight(666)
  14.       // 2、FontWeight类型
  15.       Text('你好,鸿蒙')
  16.         .fontSize(50)
  17.         .fontWeight(FontWeight.Lighter)
  18.       // 3、string类型
  19.       Text('你好,鸿蒙')
  20.         .fontSize(50)
  21.         .fontWeight('800')
  22.     }.width('100%')
  23.     .height('100%')
  24.     .justifyContent(FlexAlign.Center)
  25.   }
  26. }
复制代码
1.3.3 字体颜色

​        字体颜色可通过fontColor()方法进行设置,该方法参数类型为Color | string | number | Resource,下面逐一介绍

  • Color类型
    Color为枚举类型,其中包含了多种常用颜色,例如Color.Green
  • string类型
    string类型的参数可用于设置 rgb 格式的颜色,具体写法可以为'rgb(0, 128, 0)'或者'#008000'
  • number类型
    number类型的参数用于使用16进制的数字设置 rgb 格式的颜色,具体写法为0x008000
  • Resource类型
    Resource类型的参数用于应用resources下的element目录中定义的值。
示例代码:
在component/text目录下新建FontColorPage.ets文件
  1. @Entry
  2. @Component
  3. // 字体颜色
  4. struct FontColorPage {
  5.   build() {
  6.     Column({ space: 50 }) {
  7.       // 1、Color类型
  8.       Text('Color.Green')
  9.         .fontSize(40)
  10.         .fontWeight(FontWeight.Bold)
  11.         .fontColor(Color.Green)
  12.       // 2、string类型
  13.       Text('rgb(0, 128, 0)')
  14.         .fontSize(40)
  15.         .fontWeight(FontWeight.Bold)
  16.         .fontColor('rgba(59, 171, 59, 0.33)')
  17.       Text('#008000')
  18.         .fontSize(40)
  19.         .fontWeight(FontWeight.Bold)
  20.         .fontColor('#a4008000')
  21.       // 3、number类型
  22.       Text('0x008000')
  23.         .fontSize(40)
  24.         .fontWeight(FontWeight.Bold)
  25.         .fontColor(0xa4008000)
  26.     }.width('100%')
  27.     .height('100%')
  28.     .justifyContent(FlexAlign.Center)
  29.   }
  30. }
复制代码
1.3.4 文本对齐

文本对齐方向可通过textAlign()方法进行设置,该方法的参数为枚举类型TextAlign,可选的枚举值如下
名称描述TextAlign.Start首部对齐TextAlign.Center居中对齐TextAlign.End尾部对齐各选项效果如下
1.webp

示例代码:
text目录下新建TextAlignPage.ets文件
  1. @Entry
  2. @Component
  3. // 文本对齐
  4. struct TextAlignPage {
  5.   build() {
  6.     Row() {
  7.       Column({ space: 50 }) {
  8.         Column({ space: 10 }) {
  9.           // 1、TextAlign.Start
  10.           Text('鸿蒙操作系统是由华为公司开发的全场景、分布式的新一代操作系统,旨在实现各类智能设备的高效协同工作和统一体验')
  11.             .fontSize(20)
  12.             .width(300)
  13.             .borderWidth(1)
  14.             .textAlign(TextAlign.Start)
  15.           Text('Start')
  16.         }
  17.         Column({ space: 10 }) {
  18.           // 2、TextAlign.Center
  19.           Text('鸿蒙操作系统是由华为公司开发的全场景、分布式的新一代操作系统,旨在实现各类智能设备的高效协同工作和统一体验')
  20.             .fontSize(20)
  21.             .width(300)
  22.             .borderWidth(1)
  23.             .textAlign(TextAlign.Center)
  24.           Text('Center')
  25.         }
  26.         Column({ space: 10 }) {
  27.           // 3、TextAlign.End
  28.           Text('鸿蒙操作系统是由华为公司开发的全场景、分布式的新一代操作系统,旨在实现各类智能设备的高效协同工作和统一体验')
  29.             .fontSize(20)
  30.             .width(300)
  31.             .borderWidth(1)
  32.             .textAlign(TextAlign.End)
  33.           Text('End')
  34.         }
  35.       }.width('100%')
  36.       .height('100%')
  37.       .justifyContent(FlexAlign.Center)
  38.     }
  39.   }
  40. }
复制代码
1.3.5 最大行数和超长处理

可使用maxLines()方法控制文本的最大行数,当内容超出最大行数时,可使用textOverflow()方法处理超出部分,该方法的参数类型为{ overflow: TextOverflow },其中TextOverflow为枚举类型,可用枚举值有
名称描述TextOverflow.Clip文本超长时,进行裁剪显示。TextOverflow.Ellipsis文本超长时,显示不下的文本用省略号代替。各选项效果如下
2.webp

示例代码:
在component/text目录下新建TextOverFlowPage.ets文件
  1. @Entry
  2. @Component
  3. // 最大行数和超长处理
  4. struct TextOverFlowPage {
  5.   build() {
  6.     Column({ space: 50 }) {
  7.       Column({ space: 10 }) {
  8.         Text('鸿蒙操作系统是由华为公司开发的全场景、分布式的新一代操作系统,旨在实现各类智能设备的高效协同工作和统一体验')
  9.           .fontSize(20)
  10.           .width(300)
  11.           .borderWidth(1)
  12.         Text('原始内容')
  13.       }
  14.       // 1、TextOverflow.Clip 文本超长时,进行裁剪显示
  15.       Column({ space: 10 }) {
  16.         Text('鸿蒙操作系统是由华为公司开发的全场景、分布式的新一代操作系统,旨在实现各类智能设备的高效协同工作和统一体验')
  17.           .fontSize(20)
  18.           .width(300)
  19.           .borderWidth(1)
  20.           .maxLines(2)
  21.           .textOverflow({ overflow: TextOverflow.Clip })
  22.         Text('Clip')
  23.       }
  24.       // 2、TextOverflow.Ellipsis 文本超长时,显示不下的文本用省略号代替
  25.       Column({space:10}) {
  26.         Text('鸿蒙操作系统是由华为公司开发的全场景、分布式的新一代操作系统,旨在实现各类智能设备的高效协同工作和统一体验')
  27.           .fontSize(20)
  28.           .width(300)
  29.           .borderWidth(1)
  30.           .maxLines(2)
  31.           .textOverflow({ overflow: TextOverflow.Ellipsis })
  32.         Text('Ellipsis')
  33.       }
  34.     }.width('100%')
  35.     .height('100%')
  36.     .justifyContent(FlexAlign.Center)
  37.   }
  38. }
复制代码
二、文本输入TextInput

2.1 概述

TextInput为文本输入组件,用于接收用户输入的文本内容。
2.2 参数

TextInput组件的参数定义如下
  1. TextInput(value?:{placeholder?: string|Resource , text?: string|Resource})
复制代码

  • placeholder
placeholder属性用于设置无输入时的提示文本,效果如下
3.webp


  • text
text用于设置输入框当前的文本内容,效果如下
4.webp

示例代码:
component目录下新建input目录,新建TextInputParameter.ets文件
  1. @Entry
  2. @Component
  3. // 文本输入参数
  4. struct TextInputParameter {
  5.   build() {
  6.     Column({ space: 50 }) {
  7.       TextInput()
  8.         .width('70%')
  9.       // 1、placeholder参数
  10.       TextInput({ placeholder: '请输入用户名' })
  11.         .width('70%')
  12.       // 2、text参数
  13.       TextInput({ text: '当前内容' })
  14.         .width('70%')
  15.     }.width('100%')
  16.     .height('100%')
  17.     .justifyContent(FlexAlign.Center)
  18.   }
  19. }
复制代码
2.3 常用属性

2.3.1 输入框类型

可通过type()方法设置输入框的类型,该方法的参数为InputType枚举类型,可选的枚举值有
名称描述InputType.Normal基本输入模式InputType.Password密码输入模式InputType.Number纯数字输入模式2.3.2 光标样式

可通过caretColor()方法设置光标的颜色,效果如下
5.webp

2.3.3 placeholder样式

可通过placeholderFont()和placeholderColor()方法设置 placeholder 的样式,其中placeholderFont()用于设置字体,包括字体大小、字体粗细等,placeholderColor()用于设置字体颜色,效果如下
6.webp

2.3.4 文本样式

输入文本的样式可通过fontSize()、fontWeight()、fontColor()等通用属性方法进行设置。
示例代码:
在input目录下新建TextInputAttributePage.ets文件
  1. @Entry
  2. @Component
  3. // TextInput属性
  4. struct TextInputAttributePage {
  5.   build() {
  6.     Column({ space: 50 }) {
  7.       // 1、输入框类型 type()设置类型, InputType
  8.       Column({ space: 10 }) {
  9.         Text('输入框类型')
  10.         TextInput({ placeholder: '请输入任意内容' })
  11.           .width('70%')
  12.           .type(InputType.Normal)
  13.         TextInput({ placeholder: '请输入数字' })
  14.           .width('70%')
  15.           .type(InputType.Number)
  16.         TextInput({ placeholder: '请输入密码' })
  17.           .width('70%')
  18.           .type(InputType.Password)
  19.       }
  20.       // 2、光标样式 caretColor()设置光标的颜色
  21.       Column({ space: 10 }) {
  22.         Text('光标样式')
  23.         TextInput()
  24.           .width('70%')
  25.           .caretColor(Color.Red)
  26.       }
  27.       // 3、placeholder样式 placeholderFont、placeholderColor
  28.       Column({ space: 10 }) {
  29.         Text('placeholder样式')
  30.         TextInput({ placeholder: '请输入用户名' })
  31.           .width('70%')
  32.           .placeholderFont({ weight: 800 ,style:FontStyle.Italic})
  33.           .placeholderColor('#66008000')
  34.       }
  35.     }.width('100%')
  36.     .height('100%')
  37.     .justifyContent(FlexAlign.Center)
  38.   }
  39. }
复制代码
2.4 常用事件

2.4.1 change事件

每当输入的内容发生变化,就会触发 change 事件,开发者可使用onChange()方法为TextInput组件绑定 change 事件,该方法的参数定义如下
  1. onChange(callback: (value: string) => void)
复制代码
其中value为最新内容。
2.4.2 焦点事件

焦点事件包括获得焦点失去焦点两个事件,当输入框获得焦点时,会触发 focus 事件,失去焦点时,会触发 blur 事件,开发者可使用onFocus()和onBlur()方法为 TextInput 组件绑定相关事件,两个方法的参数定义如下
  1. onFocus(event: () => void)       
复制代码
  1. onBlur(event: () => void)
复制代码
示例代码:
在input目录下新建TextInputEvent.ets文件
  1. @Entry
  2. @Component
  3. // TextInput事件
  4. struct TextInputEvent {
  5.   build() {
  6.     Column({ space: 50 }) {
  7.       TextInput({ placeholder: '请输入用户名' })
  8.         .width('70%')
  9.         .type(InputType.Normal)
  10.         // 1、change事件
  11.         .onChange((value) => {
  12.           console.log(`用户名:${value}`)
  13.         })
  14.         // 2、获得焦点
  15.         .onFocus(() => {
  16.           console.log('用户名输入框获得焦点')
  17.         })
  18.         // 3、失去焦点
  19.         .onBlur(() => {
  20.           console.log('用户名输入框失去焦点')
  21.         })
  22.       TextInput({ placeholder: '请输入密码' })
  23.         .width('70%')
  24.         .type(InputType.Password)
  25.         .onChange((value) => {
  26.           console.log(`密码:${value}`)
  27.         })
  28.         .onFocus(() => {
  29.           console.log('密码输入框获得焦点')
  30.         })
  31.         .onBlur(() => {
  32.           console.log('密码输入框失去焦点')
  33.         })
  34.     }.width('100%')
  35.     .height('100%')
  36.     .justifyContent(FlexAlign.Center)
  37.   }
  38. }
复制代码
《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容,防止迷路,欢迎关注!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

22 小时前

举报

不错,里面软件多更新就更好了
您需要登录后才可以回帖 登录 | 立即注册