公司动态

HarmonyOS应用开发实战:萌宠日记 - TextInput 与 TextArea 输入组件详解

📅 2026/7/22 11:49:37
HarmonyOS应用开发实战:萌宠日记 - TextInput 与 TextArea 输入组件详解
HarmonyOS应用开发实战萌宠日记 - TextInput 与 TextArea 输入组件详解前言TextInput和TextArea是 ArkUI 中两个最基础的文字输入组件。在萌宠日记的日记编辑器中TextInput 用于日记标题输入TextArea 用于正文内容输入。两者配合使用构成了完整的文字输入体验。本文将从萌宠日记中 TextInput 和 TextArea 的实际使用出发深入解析输入组件的核心属性、事件监听、样式控制、键盘适配以及输入体验优化的最佳实践。一、TextInput 单行输入1.1 标题输入实现// WriteDiaryPage.ets — 标题输入 Column({ space: 8 }) { Text(标题) .fontSize(14) .fontColor(#999999) TextInput({ placeholder: 快乐的周末 }) .fontSize(18) .fontWeight(FontWeight.Bold) .fontColor(#333333) .backgroundColor(Color.Transparent) .padding(0) .onChange((value: string) { this.title value }) } .width(100%) .alignItems(HorizontalAlign.Start)1.2 TextInput 核心属性属性类型萌宠日记配置说明placeholderstring快乐的周末占位提示文字fontSizenumber18输入文字大小fontWeightFontWeightFontWeight.Bold加粗标题fontColorColor#333333深灰色文字backgroundColorColorColor.Transparent透明背景无输入框边框paddingPadding0无内边距onChange回调绑定输入变化时触发提示backgroundColor(Color.Transparent)和padding(0)让标题输入框看起来像是一个内联编辑的文本而非传统的输入框样式界面更加简洁。这种设计在移动端的日记/笔记应用中非常常见。二、TextArea 多行输入2.1 正文输入实现// WriteDiaryPage.ets — 正文输入 TextArea({ placeholder: 今天阳光很好带豆豆去公园玩了飞盘它跑得特别开心还认识了一只新朋友~ }) .width(100%) .height(120) .fontSize(15) .fontColor(#333333) .backgroundColor(Color.Transparent) .padding(0) .onChange((value: string) { this.content value })2.2 TextArea 核心属性属性类型萌宠日记配置说明placeholderstring长占位文本提示用户输入内容widthLength100%撑满容器宽度heightLength120固定高度超出可滚动fontSizenumber15正文文字大小fontColorColor#333333深灰色文字backgroundColorColorColor.Transparent透明背景paddingPadding0无内边距onChange回调绑定输入变化时触发三、TextInput vs TextArea 对比3.1 核心差异对比维度TextInputTextArea行数单行多行可滚动回车行为提交或结束输入换行适用场景标题、名称、简短输入正文、备注、长文本高度控制固定单行高度固定或自适应高度萌宠日记用途日记标题日记正文3.2 代码对比// 单行输入 — 标题 TextInput({ placeholder: 快乐的周末 }) .fontSize(18) .fontWeight(FontWeight.Bold) // 多行输入 — 正文 TextArea({ placeholder: 今天阳光很好... }) .width(100%) .height(120) .fontSize(15)四、占位文本设计4.1 占位文本的作用// 标题占位 — 简短、引导性 TextInput({ placeholder: 快乐的周末 }) // 正文占位 — 详细、场景化 TextArea({ placeholder: 今天阳光很好带豆豆去公园玩了飞盘它跑得特别开心还认识了一只新朋友~ })4.2 占位文本设计原则输入类型占位文本设计意图标题快乐的周末示例标题激发用户灵感正文完整场景描述示例内容引导用户详细记录五、输入事件监听5.1 onChange 事件// 标题输入变化 TextInput({ placeholder: 快乐的周末 }) .onChange((value: string) { this.title value console.log(Title changed:, value) }) // 正文输入变化 TextArea({ placeholder: 今天阳光很好... }) .onChange((value: string) { this.content value console.log(Content changed:, value.length, chars) })5.2 其他事件事件触发时机适用场景onChange输入内容变化实时更新状态onFocus获得焦点显示辅助提示onBlur失去焦点自动保存草稿onSubmit提交TextInput搜索、登录六、键盘类型与行为6.1 键盘类型// 普通文本键盘默认 TextInput({ placeholder: 标题 }) .type(InputType.Normal) // 多行文本键盘 TextArea({ placeholder: 正文 }) .type(InputType.Normal)6.2 键盘类型枚举InputType说明适用场景Normal默认键盘日记标题、正文Number数字键盘体重输入Phone电话号码键盘联系方式Email邮箱键盘登录注册Password密码键盘密码输入七、输入框样式定制7.1 无边框样式// 无边框输入框萌宠日记风格 TextInput({ placeholder: 标题 }) .backgroundColor(Color.Transparent) // 透明背景 .padding(0) // 无内边距 .borderWidth(0) // 无边框7.2 带边框样式// 带边框输入框另一种风格 TextInput({ placeholder: 标题 }) .backgroundColor(#F5F5F5) // 浅灰背景 .height(44) // 固定高度 .padding({ left: 12 }) // 左内边距 .borderRadius(8) // 圆角八、输入框自适应高度8.1 固定高度// 固定高度超出部分滚动 TextArea({ placeholder: 正文 }) .height(120) // 固定高度8.2 自适应高度// 自适应高度随内容增长 TextArea({ placeholder: 正文 }) .height(auto) // 自动高度需确认 API 支持九、输入体验优化9.1 自动聚焦// 进入页面时自动聚焦到标题输入框 TextInput({ placeholder: 快乐的周末 }) .autoFocus(true) // 自动获得焦点9.2 最大长度限制// 限制标题最大长度 TextInput({ placeholder: 快乐的周末 }) .maxLength(50) // 最多 50 个字符 // 显示字数统计 Text(${this.content.length}/1000) .fontSize(12) .fontColor(#999999)十、最佳实践10.1 输入组件设计原则有序列表 — 输入组件设计的 5 个原则无边框设计笔记类应用建议使用无边框输入框界面更清爽占位文本引导使用详细、场景化的占位文本引导用户输入实时状态同步通过 onChange 实时更新 State确保数据同步合理字号标题 18fp 加粗正文 15fp 常规形成层次键盘适配确保输入框在键盘弹出时不被遮挡10.2 萌宠日记输入组件总结配置项标题 TextInput正文 TextArea字号18fp Bold15fp Normal颜色#333333#333333背景透明透明高度固定单行120vp 固定占位示例标题完整场景描述边框无无事件onChangeonChange总结本文从萌宠日记的TextInput 和 TextArea使用出发深入解析了输入组件的完整方法TextInput 标题输入单行、加粗、无边框、placeholder 引导TextArea 正文输入多行、固定高度、透明背景两者对比单行 vs 多行适用场景差异占位文本设计简短标题占位 详细正文占位事件监听onChange 实时更新状态键盘类型Normal 适用于文字输入场景样式定制无边框设计界面更简洁输入体验优化自动聚焦、最大长度、字数统计TextInput 和 TextArea 是 ArkUI 中最基础的输入组件掌握它们的属性配置和样式定制能为构建专业的输入表单打下基础。下一篇我们将深入心情选择器设计与选中态管理解析日记编辑器中心情选择功能的实现。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源TextInput 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-textinputTextArea 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-textareaInputType 枚举https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-textinputState 装饰器https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-state事件处理https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-event-overview键盘适配https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/keyboard-avoid字体排版https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/typography无障碍开发https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/accessibility-kit