HarmonyOS ArkTS 的新手练手样例:TextArea 多行意见反馈表单
开头这一篇只讲一个主角TextArea。输入多行文本实时统计字数并模拟提交反馈。 对新手来说学习控件最有效的方法不是把官方属性一次背完而是先把一个完整页面跑起来然后围绕这个页面改尺寸、改状态、改事件。下面的代码就是配套截图 App 中已经编译通过的完整页面。本篇目标看懂 TextArea 的基础用法。能复制完整页面到 ArkTS 工程中运行。知道关键属性和事件分别控制什么。能基于同一个组件改出几个小样例。对应 App 页面配套 App 中本篇对应页面文件是entry/src/main/ets/pages/TextAreaFeedbackPage.ets运行 App 后从首页点击 TextArea 入口即可进入本页截图。完整页面代码import{router}fromkit.ArkUI;EntryComponentstruct TextAreaFeedbackPage{Statefeedback:string这个页面适合展示多行输入。;Statesaved:string尚未提交;build(){Column({space:18}){Row(){Button().width(44).height(36).onClick((){router.back();})Text(TextArea).fontSize(22).fontWeight(FontWeight.Bold).layoutWeight(1).textAlign(TextAlign.Center)Blank().width(44)}.width(100%)Column({space:16}){Text(意见反馈).fontSize(30).fontWeight(FontWeight.Bold).fontColor(#126A5E).width(100%)TextArea({placeholder:写下你的建议,text:this.feedback}).height(150).onChange((value:string){this.feedbackvalue;})Text(已输入${this.feedback.length}个字符).fontSize(14).fontColor(#667085).width(100%)Button(提交反馈).height(48).width(100%).onClick((){this.saved反馈已提交;})Text(this.saved).fontSize(15).fontColor(#126A5E).width(100%)}.width(100%).padding(24).borderRadius(8).backgroundColor(#FFFFFF)}.width(100%).height(100%).padding(20).backgroundColor(#F7F2E8)}}核心属性和事件讲解属性/事件作用本篇用法placeholder输入为空时的提示引导用户写建议text当前文本内容绑定this.feedback.height(150)多行输入区域高度保证截图中能看到大输入框.onChange()文本变化事件更新反馈内容和字数this.feedback.length字符统计显示已输入字符数代码结构拆开看1. 顶部返回栏每个截图页都保留一个简单顶部栏左边是返回按钮中间是当前组件名称右边用 Blank() 占位。这样做的好处是所有截图页面结构一致后期整理文章配图时不会乱。Row(){Button()Text(TextArea)Blank()}2. 主体卡片主体区域才是本篇组件的练习区。截图 Demo 里统一使用浅色背景和白色卡片是为了让控件更清楚地被看到。真实项目里你可以把这些颜色替换成自己的设计规范。3. 状态和事件如果页面里有 State它就是驱动界面变化的数据。事件里修改状态界面就会跟着刷新。这个规则在 Search、TextArea、Progress、Rating、Radio、Select、LoadingProgress 这些页面里都能看到。再做几个小样例样例 1限制最少字数if(this.feedback.trim().length10){this.saved至少输入 10 个字;return;}样例 2显示剩余字数Text(还可以输入${200-this.feedback.length}个字符)样例 3提交后清空Button(提交).onClick((){this.saved反馈已提交;this.feedback;})新手常见问题只复制了组件没有复制 State。如果组件依赖状态页面会报错或无法交互。只改了显示文本没有改事件里的状态变量导致看起来“点了没反应”。截图页没有固定宽高或留白模拟器尺寸一变画面就挤在一起。本篇小结TextArea 的学习重点是先把“能运行的完整页面”看懂再去拆属性和事件。你可以直接使用本篇完整代码截图也可以从“再做几个小样例”里挑一个继续改。附录项目设置与构建问题记录一、项目设置本篇配套一个独立 ArkTS 示例 App用于运行页面和截图建议用 DevEco Studio 打开项目后运行entry模块。项目定位是截图练习 Demo不依赖后端服务也不需要额外权限。建议新建或检查工程时保持以下设置Project typeApplication。TemplateEmpty Ability。LanguageArkTS。ModelStage。DevicePhone可按需要兼容 Tablet、2in1。Runtime OSHarmonyOS。二、SDK 版本本文主题面向 HarmonyOS ArkTS API 24。本次示例工程根目录build-profile.json5使用如下配置{ compatibleSdkVersion: 6.1.1(24), targetSdkVersion: 6.1.1(24), runtimeOS: HarmonyOS }如果本机 DevEco Studio SDK Manager 中安装的版本不同请按本机实际 API 24 SDK 调整compatibleSdkVersion和targetSdkVersion。三、项目目录说明核心目录如下HarmonyOS_ArkTS_API24_ControlsScreenshotApp/ ├── AppScope/ │ ├── app.json5 │ └── resources/ ├── entry/ │ ├── src/main/ets/entryability/EntryAbility.ets │ ├── src/main/ets/pages/ │ ├── src/main/resources/base/profile/main_pages.json │ ├── build-profile.json5 │ └── oh-package.json5 ├── build-profile.json5 ├── hvigorfile.ts └── oh-package.json5页面文件都在entry/src/main/ets/pages/路由注册文件在entry/src/main/resources/base/profile/main_pages.json五、创建项目过程打开 DevEco Studio。点击 Create Project。选择 Application。模板选择 Empty Ability。开发语言选择 ArkTS。模型选择 Stage。设置项目名称例如ArkTSControlsDemo。选择保存路径建议路径只包含英文、数字、下划线或连字符。选择 API 24 对应 SDK。点击 Finish等待工程创建完成。打开entry/src/main/ets/pages/Index.ets。运行默认工程确认模拟器或真机能打开。再逐个添加本文中的页面代码并截图。六、本次编译安装遇到的问题与解决办法1. 中文路径导致 Hvigor 拒绝构建问题现象Invalid project path. Current path does not match: D:\私人资料\CSDN\HarmonyOS_ArkTS_API24_ControlsScreenshotApp原因Hvigor 对工程路径有限制路径只能包含英文字母、数字、连字符、下划线、英文句点、英文括号、空格或。处理办法把项目复制到 ASCII 路径后构建D:\\HarmonyOS_ArkTS_API24_ControlsScreenshotApp2.DEVECO_SDK_HOME环境变量无效问题现象Invalid value of DEVECO_SDK_HOME in the system environment path.处理办法在当前命令会话中临时指定 DevEco SDK 根目录$env:DEVECO_SDK_HOMED:\Program Files\Huawei\DevEco Studio Beta\sdk3.hvigor-config.json5缺少dependencies问题现象Schema validate failed ... missingProperty: dependencies处理办法补齐hvigor/hvigor-config.json5{ modelVersion: 5.0.0, dependencies: { } }4. 打包阶段找不到 Java问题现象spawn java ENOENT处理办法使用 DevEco Studio 自带 JBR并停止旧的 Hvigor daemon 后重新构建$env:JAVA_HOMED:\Program Files\Huawei\DevEco Studio Beta\jbr$env:PathD:\Program Files\Huawei\DevEco Studio Beta\jbr\bin;$env:Pathhvigorw--stop-daemon5. 构建成功但有弃用警告构建时出现过router.pushUrl、router.back、AlertDialog.show的弃用警告但不影响本次截图 Demo 编译和安装。正式项目建议后续按当前 API 推荐方式替换。七、本次安装启动记录构建命令hvigorw--mode module-p moduleentrydefault-p productdefault assembleHap安装命令hdc install entry-default-unsigned.hap启动命令hdc shell aastart-a EntryAbility-b com.csdn.arkts.controls.screenshot验证结果HAP 构建成功。模拟器目标127.0.0.1:5555。安装结果install bundle successfully。启动结果start ability successfully。

相关新闻

【AI环境监测预警系统实战指南】:20年专家亲授3大落地陷阱与5步部署黄金法则

【AI环境监测预警系统实战指南】:20年专家亲授3大落地陷阱与5步部署黄金法则

更多请点击: https://intelliparadigm.com 第一章:AI环境监测预警系统的核心价值与演进脉络 AI环境监测预警系统已从传统单点传感器数据采集,跃迁为融合多源异构感知、边缘智能推理与云端协同决策的闭环生态。其核心价值不仅在于提升污染事件…

2026/10/13 12:19:03 阅读更多 →
NitroGen开源游戏AI框架:通用智能体开发实践

NitroGen开源游戏AI框架:通用智能体开发实践

1. NitroGen项目概述NitroGen是一个面向通用游戏智能体的开源基础模型项目,旨在为游戏AI开发提供统一的技术框架。这个项目最吸引我的地方在于它尝试解决游戏AI开发中的核心痛点——不同游戏类型需要重复开发底层智能体架构的问题。在实际游戏开发中,我们…

2026/10/13 7:46:34 阅读更多 →
Python数值类型详解:int、float、complex与bool

Python数值类型详解:int、float、complex与bool

1. Python基础数据类型概述刚接触Python时,最让我困惑的就是各种数据类型的区别和用法。记得第一次写计算器程序,明明11应该等于2,结果却得到了11,这才意识到数据类型的重要性。Python作为动态类型语言,虽然不需要显式…

2026/10/13 8:04:44 阅读更多 →

最新新闻

PHPStan 从 1.x 升级到 2.0 完整指南:配置迁移、规则变化与扩展开发适配(object-enumerator 项目实践)

PHPStan 从 1.x 升级到 2.0 完整指南:配置迁移、规则变化与扩展开发适配(object-enumerator 项目实践)

开发工具 【免费下载链接】object-enumerator Traverses array structures and object graphs to enumerate all referenced objects 项目地址: https://gitcode.com/gh_mirrors/ob/object-enumerator 点击查看 免费下载 本篇指南以 PHPStan 官方升级文档&#xff…

2026/10/15 2:04:13 阅读更多 →
HoloCubic 的 LVGL 模拟器 Bar 进度条控件实战:从 lv_ex_bar_1 示例读懂 lv_bar 核心机制

HoloCubic 的 LVGL 模拟器 Bar 进度条控件实战:从 lv_ex_bar_1 示例读懂 lv_bar 核心机制

嵌入式物联网智能硬件嵌入式GUI硬件开发 【免费下载链接】HoloCubic 带网络功能的伪全息透明显示桌面站 项目地址: https://gitcode.com/gh_mirrors/ho/HoloCubic 点击查看 免费下载 本篇技术指南以 HoloCubic 开源仓库中 LVGL 模拟器(VS2019 SDL2 工程…

2026/10/15 2:04:13 阅读更多 →
Display Driver Uninstaller(DDU)深度解析:显卡驱动彻底清理工具的使用原理与实战指南

Display Driver Uninstaller(DDU)深度解析:显卡驱动彻底清理工具的使用原理与实战指南

系统编程 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller 点击查看 免费下载 本文基于 Readme_ES.md&…

2026/10/15 2:04:13 阅读更多 →
GluonCV 语义分割模型的推理与 INT8 量化实战指南

GluonCV 语义分割模型的推理与 INT8 量化实战指南

计算机视觉深度学习预训练 【免费下载链接】gluon-cv Gluon CV Toolkit 项目地址: https://gitcode.com/gh_mirrors/gl/gluon-cv 点击查看 免费下载 本篇技术指南以 GluonCV 仓库 scripts/segmentation/README.md 为核心,系统讲解语义分割(S…

2026/10/15 2:04:13 阅读更多 →
从裸机指令到意识涌现:一个底层系统程序员眼中大模型计算的“祛魅”时刻

从裸机指令到意识涌现:一个底层系统程序员眼中大模型计算的“祛魅”时刻

这几年,人工智能(AI)与大语言模型(LLM)的狂潮席卷了全球的每一个角落。从各大媒体惊呼“通用人工智能(AGI)即将降临”,到风险投资机构为各种“智能体自主意识”概念疯狂挥舞支票&…

2026/10/15 2:04:13 阅读更多 →
STM32+华为云IoT+Qt:智能家居远程控制系统的三层架构与MQTT实践

STM32+华为云IoT+Qt:智能家居远程控制系统的三层架构与MQTT实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 2:03:12 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →