当前位置:   article > 正文

第九节HarmonyOS 常用基础组件3-TextInput_harmonyos textinput

harmonyos textinput

一、TextInput描述

        TextInput组件用于输入单行文本,响应输入事件。TextInput的使用也非常广泛,例如应用登录账号密码、发送消息等。和Text组件一样,TextInput组件也支持文本样式设置,下面的示例代码实现了一个简单的输入框:

  1. @Entry
  2. @Component
  3. struct Index {
  4. @State message: string = 'Hello 334 World'
  5. build() {
  6. Row() {
  7. Column() {
  8. TextInput()
  9. .fontColor(Color.Blue)
  10. .fontSize(20)
  11. .fontStyle(FontStyle.Italic)
  12. .fontWeight(FontWeight.Bold)
  13. .fontFamily('Arial')
  14. }
  15. .width('100%')
  16. }
  17. .height('100%')
  18. }
  19. }

效果图:

二、设置输入提示文本

        平时使用输入框的时候,往往会有一些提示文字。例如登录账号的时候会有“请输入账号”这样的文本提示,当用户输入内容之后,提示文本就会消失,这种提示功能使用placeholder属性就可以轻松的实现。您还可以使用placeholderColor和placeholderFont分别设置提示文本的颜色和样式,示例代码如下:

  1. @Entry
  2. @Component
  3. struct Index {
  4. @State message: string = 'Hello 334 World'
  5. build() {
  6. Row() {
  7. Column() {
  8. TextInput({placeholder:"请输入账号"})
  9. .fontColor(Color.Blue)
  10. .height(60)
  11. .width(300)
  12. .fontSize(20)
  13. .fontStyle(FontStyle.Italic)
  14. .fontWeight(FontWeight.Medium)
  15. .fontFamily('Arial')
  16. .placeholderColor(Color.Red)
  17. Blank(10)
  18. TextInput({ placeholder: "请输入1~16位密码" })
  19. .fontColor(Color.Blue)
  20. .fontSize(20)
  21. .height(60)
  22. .width(300)
  23. .fontStyle(FontStyle.Italic)
  24. .fontWeight(FontWeight.Medium)
  25. .fontFamily('Arial')
  26. .placeholderColor(Color.Red)
  27. }
  28. .width('100%')
  29. }
  30. .height('100%')
  31. }
  32. }

效果图如下:

三、设置输入类型

        可以使用type属性来设置输入框类型。例如密码输入框,一般输入密码的时候,为了用户密码安全,内容会显示为“......”,针对这种场景,将type属性设置为InputType.Password就可以实现。示例代码如下:

  1. @Entry
  2. @Component
  3. struct Index {
  4. @State message: string = 'Hello 334 World'
  5. build() {
  6. Row() {
  7. Column() {
  8. TextInput({placeholder:"请输入账号"})
  9. .fontColor(Color.Blue)
  10. .height(60)
  11. .width(300)
  12. .fontSize(20)
  13. .fontStyle(FontStyle.Italic)
  14. .fontWeight(FontWeight.Medium)
  15. .fontFamily('Arial')
  16. .placeholderColor(Color.Red)
  17. Blank(10)
  18. TextInput({ placeholder: "请输入1~16位密码" })
  19. .type(InputType.Password)
  20. .fontColor(Color.Blue)
  21. .fontSize(20)
  22. .height(60)
  23. .width(300)
  24. .fontStyle(FontStyle.Italic)
  25. .fontWeight(FontWeight.Medium)
  26. .fontFamily('Arial')
  27. .placeholderColor(Color.Red)
  28. }
  29. .width('100%')
  30. }
  31. .height('100%')
  32. }
  33. }

效果图:

type的参数类型为InputType,包含以下几种输入类型:

  1. Normal:基本输入模式。支持数字、字母、下划线、空格、特殊字符等。

Password:密码输入模式

Email:e-mail地址输入模式

Number:纯数字输入模式

四、设置光标位置

可以使用TextInputController动态设置光位置,下面的示例代码使用TextInputController的caretPosition方法,将光标移动到了第二个字符后。

代码:

  1. @Entry
  2. @Component
  3. struct Index {
  4. controller: TextInputController = new TextInputController();
  5. build() {
  6. Row() {
  7. Column() {
  8. TextInput({ controller: this.controller })
  9. .width(300)
  10. .height(40)
  11. Blank(10)
  12. Button('设置光标位置')
  13. .onClick(() => {
  14. this.controller.caretPosition(2)
  15. })
  16. }
  17. .width('100%')
  18. }
  19. .height('100%')
  20. }
  21. }

效果图-点击按钮之前:

效果图-点击按钮之后:

五、获取输入的文本

        我们可以给TextInput设置onChange事件,输入文本发生变化时触发回调,下面示例代码中的value为实时获取用户输入的文本信息。

  1. @Entry
  2. @Component
  3. struct Index {
  4. @State input_text: string = "";
  5. build() {
  6. Row() {
  7. Column() {
  8. TextInput({placeholder:"请输入您的描述语"})
  9. .placeholderColor(Color.Red)
  10. .fontColor(Color.Green)
  11. .width(300)
  12. .height(40)
  13. .onChange((value: string) => {
  14. this.input_text = value;
  15. console.log("onEditChange value = " + this.input_text);
  16. })
  17. .onEditChange((isEditing: boolean) => {
  18. console.log("onEditChange isEditing = " + isEditing);
  19. })
  20. Blank(10)
  21. Text(this.input_text)
  22. }
  23. .width('100%')
  24. .alignItems(HorizontalAlign.Center)
  25. .padding(12)
  26. .backgroundColor(0xE6F2FD)
  27. }
  28. .height('100%')
  29. }
  30. }

效果图:

日志:

        可以看出,当点击到输入框内时,onEditChange方法回调的isEditing返回true,表示正在编辑输入框。下面是输入123对应的实时输入内容。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/247926
推荐阅读
相关标签
  

闽ICP备14008679号