介绍
TextArea 是用于接收多行文本输入的组件,适用于需要用户输入长文本的场景(如备注、评论、反馈等),相比单行的 TextInput 支持换行和更多的文本内容。
基本特性
- 支持 多行文本输入,自动换行
- 可设置最大输入长度、提示文本
- 支持获取焦点、失去焦点等事件
- 可配置文本对齐方式、字体样式等
应用场景
- 评论
- 外卖备注
- 笔记、记事本
- 个人介绍
基本用法
TextArea 的核心是通过 value 属性绑定文本数据,并通过 onChange 事件实时监听输入变化,基本示例如下:
@State inputValue: string = ""
build() {
Column() {
TextArea({
text: $$this.inputValue, // 绑定文本内容
placeholder:"请输入个人介绍" //提示文本(占位符)
})
.height(150) // 设置输入框高度,否则是单行输入框
.border({ width: 1, color: "#cccccc" })
.margin(10)
// 按钮
Button("获取内容")
.onClick(()=>{
console.log("获取内容:",this.inputValue)
})
Button("修改内容")
.onClick(()=>{
this.inputValue = "123"
console.log("修改内容")
})
}
}
常用属性
| 属性 | 说明 |
|---|---|
maxLength |
最大输入长度限制,如 maxLength(500) 限制最多输入500个字符 |
textAlign |
文本对齐方式,可选 TextAlign.Left(左对齐)、TextAlign.Center(居中)、TextAlign.Right(右对齐) |
fontSize |
文本字体大小,如 fontSize(16) |
fontColor |
文本颜色,如 fontColor("#333333") |
placeholderColor |
提示文本(hint)的颜色,如 placeholderColor("#999999") |
enabled |
是否允许输入,false 时为禁用状态(灰显,不可编辑) |
border |
边框样式,如 border({ width: 1, radius: 4, color: "#ddd" })(宽度、圆角、颜色) |
width/height |
组件宽高,建议设置固定高度或使用 minHeight 适应内容 |
padding |
内边距,调整文本与边框的距离,如 padding(10) |
常用事件
| 事件 | 说明 |
|---|---|
onChange |
文本内容变化时触发,返回当前输入的完整文本,用于同步数据 |
onFocus |
输入框获取焦点时触发(如用户点击输入框),可用于弹出提示或调整样式 |
onBlur |
输入框失去焦点时触发(如用户点击其他区域),可用于校验输入内容 |
onSubmit |
点击软键盘的“完成”按钮时触发,通常用于提交输入内容 |
例子
带长度限制
TextArea({
text: $$this.inputValue, // 绑定文本内容
placeholder:"最多输入10字" //提示文本(占位符)
})
.maxLength(10) // 限制最大长度
.height(120)
.border({ width: 1, radius: 4 })
.margin(10)
禁用状态的文本区域
TextArea({
text: $$this.inputValue, // 绑定文本内容
placeholder:"这是一段不可编辑的文本内容" //提示文本(占位符)
})
.enabled(false) // 禁用输入
.height(120)
.border({ width: 1, radius: 4 })
.margin(10)
带焦点监听的文本输入
import { promptAction } from '@kit.ArkUI';
TextArea({
text: $$this.inputValue, // 绑定文本内容
placeholder:"点击输入" //提示文本(占位符)
})
.onFocus(() => {
console.log("文本框获取焦点");
// 可在此处执行准备逻辑,如加载历史记录
})
.onBlur(() => {
console.log("文本框失去焦点");
// 可在此处执行校验,如检查内容是否为空
if (this.inputValue.length === 0) {
promptAction.showToast({
message: "内容不能为空"
})
// AlertDialog.show({ message: "内容不能为空" });
}
})
.height(120)
.border({ width: 1})
.margin(10)
注意
高度设置:
TextArea需设置合适的height或minHeight,避免因内容过多导致显示不全性能优化:当
maxLength较大时,避免在onChange中执行复杂逻辑(如实时过滤),可在onBlur或onSubmit中处理与 TextInput 区别:
TextArea适用于多行输入,TextInput适用于单行输入(如用户名、密码)
通过 TextArea 组件,可轻松实现多行文本输入功能,结合属性配置和事件处理,能满足各类长文本输入场景的需求。