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

news2024/12/30 3:18:59

一、TextInput描述

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

@Entry
@Component
struct Index {
  @State message: string = 'Hello 334 World'

  build() {
    Row() {
      Column() {
        TextInput()
          .fontColor(Color.Blue)
          .fontSize(20)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Bold)
          .fontFamily('Arial')
      }
      .width('100%')
    }
    .height('100%')
  }
}

效果图:

二、设置输入提示文本

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

@Entry
@Component
struct Index {
  @State message: string = 'Hello 334 World'

  build() {
    Row() {
      Column() {
        TextInput({placeholder:"请输入账号"})
          .fontColor(Color.Blue)
          .height(60)
          .width(300)
          .fontSize(20)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Medium)
          .fontFamily('Arial')
          .placeholderColor(Color.Red)

        Blank(10)

        TextInput({ placeholder: "请输入1~16位密码" })
          .fontColor(Color.Blue)
          .fontSize(20)
          .height(60)
          .width(300)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Medium)
          .fontFamily('Arial')
          .placeholderColor(Color.Red)
      }
      .width('100%')
    }
    .height('100%')
  }
}

效果图如下:

三、设置输入类型

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

@Entry
@Component
struct Index {
  @State message: string = 'Hello 334 World'

  build() {
    Row() {
      Column() {
        TextInput({placeholder:"请输入账号"})
          .fontColor(Color.Blue)
          .height(60)
          .width(300)
          .fontSize(20)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Medium)
          .fontFamily('Arial')
          .placeholderColor(Color.Red)

        Blank(10)

        TextInput({ placeholder: "请输入1~16位密码" })
          .type(InputType.Password)
          .fontColor(Color.Blue)
          .fontSize(20)
          .height(60)
          .width(300)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Medium)
          .fontFamily('Arial')
          .placeholderColor(Color.Red)
      }
      .width('100%')
    }
    .height('100%')
  }
}

效果图:

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

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

Password:密码输入模式

Email:e-mail地址输入模式

Number:纯数字输入模式

四、设置光标位置

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

代码:

@Entry
@Component
struct Index {
  controller: TextInputController = new TextInputController();

  build() {
    Row() {
      Column() {
        TextInput({ controller: this.controller })
          .width(300)
          .height(40)
        Blank(10)
        Button('设置光标位置')
          .onClick(() => {
            this.controller.caretPosition(2)
          })

      }
      .width('100%')
    }
    .height('100%')
  }
}

效果图-点击按钮之前:

效果图-点击按钮之后:

五、获取输入的文本

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

@Entry
@Component
struct Index {
  @State input_text: string = "";

  build() {
    Row() {
      Column() {
        TextInput({placeholder:"请输入您的描述语"})
          .placeholderColor(Color.Red)
          .fontColor(Color.Green)
          .width(300)
          .height(40)
          .onChange((value: string) => {
            this.input_text = value;
            console.log("onEditChange value = " + this.input_text);
          })
          .onEditChange((isEditing: boolean) => {
            console.log("onEditChange isEditing = " + isEditing);
          })
        Blank(10)
       Text(this.input_text)

      }
      .width('100%')
      .alignItems(HorizontalAlign.Center)
      .padding(12)
      .backgroundColor(0xE6F2FD)
    }
    .height('100%')
  }
}

效果图:

日志:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1277354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css所有属性介绍

文章目录 1️⃣ CSS属性介绍1.1 CSS3 动画属性(Animation)1.2 CSS 背景属性(Background)1.3 CSS 边框属性(Border 和 Outline)1.4 Box 属性1.5 Color 属性1.6 Content for Paged Media 属性1.7 CSS 尺寸属性…

prometheus部署及与grafana结合应用

一、prometheus 介绍 prometheus server 是 Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。它会定期从静态配置的监控目标或者基于服务发现自动配置的自标中进行拉取数据,当新拉取到的数据大于配置的内存缓存区时&…

虚拟机备份数据自动化验证原理

备份数据成功备份下来了,但是备份数据是否可用可靠?对于这个问题,最好最可靠的方法是将备份数据实际恢复出来验证。 但是这样的方法,不仅费时费力,而且需要随着备份数据的定期产生,还应当定期做备份数据验…

MacDroid Pro for Mac – 安卓设备文件传输助手,实现无缝连接与传输!

想要在Mac电脑上轻松管理和传输您的安卓设备文件吗?MacDroid Pro for Mac 是您的最佳选择!这款强大的文件传输助手可以让您在Mac上与安卓设备之间实现快速、方便的文件传输。 MacDroid Pro for Mac 提供了简单易用的界面,让您能够直接在Mac上…

逻辑卷管理器lvm

啥意思,个人理解就是可以将物理分区合并一起组成大的磁盘,也可以移除其中的某个分区。 有四个概念需要了解下 PV,物理卷,VG 卷用户组,PE物理扩展块,LV逻辑卷 p物理,v卷,g用户组&a…

Java——》线性数据结构

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

java下载和安装

java下载和安装 一、下载和安装 下载地址:https://www.oracle.com/cn/java/technologies/downloads/#jdk21-windows 1.这里我们下载JDK21,初学者建议还是使用JDK8或者JDK17,因为更加稳定 2.下载完成后运行 3.点击下一步 4.设置安装位置&am…

双向链表的结构与基本操作(初始化,头插,尾插,删除,输出,清空,销毁等)

目录 1.双向链表的结构设计 2.双向链表的结构示意图: 3.双向链表的实现 4.双向链表的总结 1.双向链表的结构设计 typedef struct DNode{int data;struct DNode* next;//后继指针struct DNode* prio;//前驱指针}DNode ,*DList; 2.双向链表的结构示意图: 3.双向链表的实现 …

Mysql数据库介绍

1.1 MySQL数据库介绍 1.1.1 什么是数据库DB? DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作…

深度学习实战63-利用自适应混合金字塔网络实现人脸皮肤美颜效果,快速部署与实现一键美颜功能

大家好,我是微学AI,今天给大家介绍一下深度学习实战63-利用自适应混合金字塔网络实现人脸皮肤美颜效果,快速部署与实现一键美颜功能。在本文中,我将介绍一种新颖的自适应混合金字塔网络(ABPN),该网络可以实现对超高分辨率照片的快速局部修饰。该网络主要由两个组件组成:一…

IDEA下载和安装

IDEA的下载和安装 一、概述 IDEA全称IntelliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。 集成环境:把代码编写,编译,执行,调试等多种功能综合到一起的开发工具…

数字员工「取数宝」上新!4大优势,解决电商取数难题

全域电商,是近几年的新趋势,几乎所有商家都在布局全域,追求全域增长。但商家发现,随着投入成本的上涨,利润却没有增加。 其中最为突出的是——商家为保证全域数据的及时更新,通过堆人头的方式完成每日取数…

卡码网语言基础课 | 18. 开房门

目录 一、 map基础 二、 map的使用 2.1 map头文件的引入 2.2 声明映射关系 2.3 插入键值 2.4 查找键的存在 三、 范围for循环 题目: 假设你手里有一串钥匙,这串钥匙上每把钥匙都有一个编号,对应着一个房门的编号。现给你一个房门编号&a…

7.4 Windows驱动开发:内核运用LoadImage屏蔽驱动

在笔者上一篇文章《内核监视LoadImage映像回调》中LyShark简单介绍了如何通过PsSetLoadImageNotifyRoutine函数注册回调来监视驱动模块的加载,注意我这里用的是监视而不是监控之所以是监视而不是监控那是因为PsSetLoadImageNotifyRoutine无法实现参数控制&#xff0…

免费采集工具推荐,好文章值得收藏

采集工具的作用 在互联网的海洋中,有许多强大的免费采集工具,它们为用户提供了便捷、高效的方式,帮助用户从各种网站中收集、整理所需的信息。这些工具不仅广泛应用于市场研究、竞争情报等商业领域,同时也服务于学术研究、个人兴…

分享86个节日PPT,总有一款适合您

分享86个节日PPT,总有一款适合您 86个节日PPT下载链接:https://pan.baidu.com/s/1J09nhufX_3gvT2XxZkKz6Q?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

30秒搞定一个属于你的问答机器人,快速抓取网站内容

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 文章目录 简介运行效果GitHub地址 简介 爬取一个网站的内容,然后让这个内容变成你自己的私有知识库,并且还可以搭建一个基于私有知识库的问…

道可云会展元宇宙平台全新升级,打造3D沉浸式展会新模式

随着VR虚拟现实、人工智能、虚拟数字人等元宇宙技术的快速发展,各个行业正试图通过元宇宙技术寻求新的发展突破口,会展行业也不例外。会展作为经贸领域的重要产业形态,越来越多的企业和组织开始寻求通过元宇宙技术为展会赋能,以满…

type-c充电器输出电压5V9V12V15V20V PD协议诱骗快充应用方案

Type-C接口的PD充电器(如iPhone的20W充电器)默认是没有电压输出的,想要让Type-C的充电器输出5V、9V、12V、15V、20V,只需要在产品上使用一颗快充取电芯片XSP08即可。 工作原理: 各类小家电产品如平板电脑、智能穿戴产…

Redis主从复制实现RCE

文章目录 前置知识概念redis常用命令redis module 利用条件利用工具思路例题 [网鼎杯 2020 玄武组]SSRFMe方法一方法二 总结 前置知识 概念 背景是多台服务器要保存同一份数据,如何实现其一致性呢?数据的读写操作是否每台服务器都可以处理?这…