news 2026/7/6 17:51:50

【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/7/1 16:34:23

通义千问3-Embedding-4B应用指南:多语言翻译辅助

通义千问3-Embedding-4B应用指南:多语言翻译辅助 1. 引言 随着全球化信息流动的加速,跨语言内容理解与检索需求日益增长。在自然语言处理任务中,高质量的文本向量化模型成为支撑多语言语义搜索、文档对齐、bitext挖掘等关键能力的核心基础设…

作者头像 李华
网站建设 2026/7/2 11:09:09

PyTorch 2.7学术福利:教育邮箱认证,GPU时长免费送

PyTorch 2.7学术福利:教育邮箱认证,GPU时长免费送 作为一名在科研一线挣扎多年的“老博士”,我太懂那种为了跑一个实验、验证一个模型,不得不排队等服务器、省着用GPU时长的窘境了。尤其是当你手头的项目明确要求使用 PyTorch 2.…

作者头像 李华
网站建设 2026/6/21 10:27:45

FSMN-VAD方言适应:西南官话与东北话的检测表现测试

FSMN-VAD方言适应:西南官话与东北话的检测表现测试 1. 引言 语音端点检测(Voice Activity Detection, VAD)是语音信号处理中的关键预处理步骤,其目标是从连续音频流中准确识别出有效语音段,剔除静音或无意义背景噪声…

作者头像 李华
网站建设 2026/7/1 19:28:32

Voice Sculptor调参秘籍:云端GPU快速迭代实验方案

Voice Sculptor调参秘籍:云端GPU快速迭代实验方案 你是不是也经历过这样的科研“噩梦”?论文 deadline 还剩三天,关键实验还没跑完。本地机器上,一组超参数组合要跑十几个小时,20组参数意味着两天两夜连续计算——还不…

作者头像 李华
网站建设 2026/6/30 18:51:33

MinerU智能文档解析避坑指南:常见问题全解

MinerU智能文档解析避坑指南:常见问题全解 1. 引言:为什么需要MinerU? 在日常工作中,处理PDF、扫描件或截图类文档是许多研究人员、工程师和办公人员的高频需求。然而,传统OCR工具往往只能实现“看得见”却无法“读得…

作者头像 李华
网站建设 2026/6/20 12:11:53

Qwen3-0.6B实战案例:智能问答系统搭建详细步骤(附代码)

Qwen3-0.6B实战案例:智能问答系统搭建详细步骤(附代码) 1. 背景与目标 随着大语言模型在自然语言理解、生成和推理能力上的持续突破,轻量级模型因其部署成本低、响应速度快,在边缘设备和中小企业场景中展现出巨大潜力…

作者头像 李华