news 2026/5/1 9:49:44

【HarmonyOS NEXT】ArkUI实现「单格单字符+下划线」手机号/验证码输入框

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【HarmonyOS NEXT】ArkUI实现「单格单字符+下划线」手机号/验证码输入框

一、背景

在开发鸿蒙登录/验证码页面时,需要实现「每个数字单独占一格、每格下方带下划线、输入框隐藏」的手机号或验证码输入效果。

最初我是打算用输入框TextInput+下划线Divider来实现这个效果的,但是无法实现「单格单字符+独立下划线」的视觉效果,最终采用以下的实现思路

需要实现的效果图:

二、实现思路

以11位手机号码为例:

1、UI视觉:通过ForEach循环渲染 11 个由Column包裹的 “Text+Divider” 组合,实现 单格数字+下划线的效果。

2、交互实现:隐藏的TextInput处理实际输入和数据绑定

3、点击控制:当点击输入数字时,通过focusControl将焦点传递给隐藏的TextInput,确保输入的连贯性

三、具体代码如下

以下代码可直接运行查看效果

@Entry @ComponentV2 struct Index { @Local phoneNumber: string = "" private inputKey: string = "mobileFocus" controller: TextInputController = new TextInputController() build() { Column() { Stack({ alignContent: Alignment.Center }) { // 1. 交互层:隐藏的TextInput(处理输入逻辑) TextInput({ text: this.phoneNumber, controller: this.controller }) .fontSize(16) .opacity(0) .type(InputType.Number) .height('auto') .key(this.inputKey) .textAlign(TextAlign.Center) .maxLength(11) .onChange((value) => { this.phoneNumber = value }) //2. UI层:TextAndLine组件(渲染11个格子) TextAndLine({ count: 11, chat: this.phoneNumber, textWidth: 20, dividerWidth: 24 }) } .margin({ top: 100 }) .onClick(() => { focusControl.requestFocus(this.inputKey) }) } .width('100%') .height('100%') .backgroundColor('#151617') } } @ComponentV2 export struct TextAndLine { @Param chat: string = "" @Param count: number = 11 @Param textWidth: number = 20 @Param dividerWidth: number = 24 private dataArray: string[] = new Array(this.count).fill(null) build() { Row({ space: 8 }) { ForEach(this.dataArray, (value: string, index: number) => { Column() { Text(this.getValue(index)) .width(this.textWidth) .height(44) .lineHeight(44) .fontColor('#CCFFFFFF') .fontSize(32) .textAlign(TextAlign.Center) Divider() .strokeWidth(1) .color('#99FFFFFF') .width(this.dividerWidth) }.justifyContent(FlexAlign.Center) }) } .width('auto') .height(60) .backgroundColor('#FF151617') } getValue(index: number): string { if (this.chat.length > index) { return this.chat[index].toString() } else { return " " } } }

四、实现效果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:49:46

Emotion2Vec+ Large与OpenFace多模态情感识别对比分析

Emotion2Vec Large与OpenFace多模态情感识别对比分析 1. 引言:多模态情感识别的技术背景与选型需求 随着人机交互技术的不断演进,情感识别已成为智能客服、心理健康监测、虚拟助手等场景中的关键技术。传统的情感理解依赖文本或语音单一模态&#xff0…

作者头像 李华
网站建设 2026/4/27 22:02:15

模型文件缺失?Live Avatar检查与修复操作指南

模型文件缺失?Live Avatar检查与修复操作指南 1. 引言 在部署和使用开源数字人模型的过程中,模型文件缺失是开发者最常遇到的问题之一。本文聚焦于 Live Avatar ——由阿里联合高校开源的高性能数字人生成模型,在实际运行中因显存限制、路径…

作者头像 李华
网站建设 2026/5/1 7:24:20

Voice Sculptor创意应用:游戏NPC语音系统搭建实战

Voice Sculptor创意应用:游戏NPC语音系统搭建实战 1. 引言:游戏NPC语音的痛点与创新方案 在现代游戏开发中,非玩家角色(NPC)是构建沉浸式世界体验的核心组成部分。然而,传统NPC语音制作面临诸多挑战&…

作者头像 李华
网站建设 2026/5/1 7:17:52

YOLO26镜像保姆级教程:从数据集准备到模型部署

YOLO26镜像保姆级教程:从数据集准备到模型部署 在智能安防、工业质检和自动驾驶等前沿领域,目标检测技术正以前所未有的速度推动AI应用落地。然而,即便掌握了先进的算法理论,开发者仍常被环境配置、依赖冲突和硬件适配等问题拖慢…

作者头像 李华
网站建设 2026/4/7 15:34:46

一键部署AutoGen Studio:Qwen3-4B模型开箱即用体验

一键部署AutoGen Studio:Qwen3-4B模型开箱即用体验 1. 背景与核心价值 随着大语言模型(LLM)在实际业务场景中的广泛应用,如何高效构建基于多智能体的自动化系统成为开发者关注的重点。传统的代理开发方式依赖大量编码和调试&…

作者头像 李华
网站建设 2026/4/18 9:23:52

从0开始学AI语音合成:VibeVoice网页版保姆级教程

从0开始学AI语音合成:VibeVoice网页版保姆级教程 在播客、有声书和虚拟角色对话日益普及的今天,内容创作者面临一个共同挑战:如何让机器合成的声音听起来不像是“读稿”,而更像两个真实人物在自然交谈?传统文本转语音…

作者头像 李华