文本框(lv_textarea)文本框是一个带有标签和光标的 页面(lv_page) 。可以在其中添加文本或字符。长行被换行,并且当文本变得足够长时,可以滚动文本区域。
零件和样式
文本框与 页面(lv_page) 具有相同的部分。期望 LV_PAGE_PART_SCRL
,因为它不能被引用并且始终是透明的。请参阅该页面的详细文档。
除了Page部分之外,还存在虚拟 `LV_TEXTAREA_PART_CURSOR
部分来绘制光标。光标的区域始终是当前字符的边界框。可以通过在 LV_TEXTAREA_PART_CURSOR
的样式中添加背景色和背景色来创建块光标。创建行光标使光标透明并设置border_side属性。
用法
添加文字
可以使用以下命令将文本或字符插入当前光标的位置:
lv_textarea_add_char(textarea, 'c')
lv_textarea_add_text(textarea, "insert this text")
要添加宽字符,例如 'á'
, 'ß'
或 CJK 字符(中日韩统一表意文字),请使用 lv_textarea_add_text(ta, "á")
。
lv_textarea_set_text(ta, "New text")
更改整个文本。
占位符
可以使用 lv_textarea_set_placeholder_text(ta, "Placeholder text")
指定一个占位符文本-当“文本”区域为空时显示。
删除字符
要从当前光标位置的左侧删除字符,请使用 lv_textarea_del_char(textarea)
要从右边删除,请使用 lv_textarea_del_char(textarea)
移动光标
可以使用 lv_textarea_set_cursor_pos(textarea, 10)
直接修改光标位置。 0
位置表示“在第一个字符之前”, LV_TA_CURSOR_LAST
表示“在最后一个字符之后”
可以使用
lv_textarea_cursor_right(textarea)
lv_textarea_cursor_left(textarea)
lv_textarea_cursor_up(textarea)
lv_textarea_cursor_down(textarea)
如果调用 lv_textarea_set_cursor_click_pos(textarea, true)
,则光标将跳至单击“文本”区域的位置。
隐藏光标
可以使用 lv_textarea_set_cursor_hidden(textarea, true)
隐藏光标。
光标闪烁时间
光标的闪烁时间可以通过 lv_textarea_set_cursor_blink_time(textarea, time_ms)
进行调整。
单行模式
可以将“文本”区域配置为以 lv_textarea_set_one_line(ta, true)
为一行。在此模式下,高度自动设置为仅显示一行,忽略换行符,并且禁用自动换行。
密码模式
文本区域支持可以通过 lv_textarea_set_pwd_mode(textarea, true)
启用的密码模式。
如果字体中存在 ( Bullet,U+2022 ) 字符,则一段时间后或输入新字符后,输入的字符将转换为该字符。如果 •
不存在,将使用 *
。
在密码模式下 lv_textarea_get_text(textarea)
给出真实文本,而不是项目符号字符。
可见时间可以使用lv_textarea_set_pwd_show_time(textarea,time_ms)进行调整。
文字对齐
可以使用 lv_textarea_set_text_align(textarea, LV_LABEL_ALIGN_LET/CENTER/RIGHT)
将文本左,中或右对齐。
在单行模式下,仅当文本保持对齐时才能水平滚动文本。
字符过滤
可以使用 lv_textarae_set_accepted_chars(ta, "0123456789.+-")
设置可接受字符的列表。其他字符将被忽略。
最大文字长度
最大字符数可以通过 lv_textarea_set_max_length(textarea, max_char_num)
进行限制
长文本
如果“文本”区域中的文本很长(例如> 20k个字符),则其滚动和绘制速度可能会很慢。但是,通过在 lv_conf.h 中启用 LV_LABEL_LONG_TXT_HINT 1
可以极大地改善它。 它将保存一些有关标签的信息,以加快其绘制速度。使用 LV_LABEL_LONG_TXT_HINT
,滚动和绘图将与使用“普通”短文本一样快。
选择文字
如果通过 lv_textarea_set_text_sel(textarea, true)
启用,则可以选择一部分文本。就像用鼠标在PC上选择文本时一样。
滚动条
可以根据 lv_textarea_set_scrollbar_mode(textarea, LV_SCRLBAR_MODE_...)
设置的不同策略显示滚动条。在Page对象中了解更多信息。
滚动传播
当“文本”区域在另一个可滚动对象(如“页面”)上滚动并且滚动已到达“文本”区域的边缘时,滚动可以传播到父对象。也就是说,当“文本”区域可以进一步滚动时,父级将被滚动。
可以使用 lv_ta_set_scroll_propagation(ta, true)
启用它。
在 页面(lv_page) 对象中了解更多信息。
边缘闪烁
当“文本”区域滚动到边缘时,如果通过 lv_ta_set_edge_flash(ta, true)
启用,则可以显示类似Flash动画的圆圈
事件
除了 通用事件 ,文本框还支持以下 特殊事件 :
- LV_EVENT_INSERT 在插入字符或文本之前发送。事件数据是计划插入的文本。lv_ta_set_insert_replace(ta,“新文本”)替换要插入的文本。新文本不能位于局部变量中,该局部变量会在事件回调存在时被销毁。 “”表示请勿插入任何内容。
- LV_EVENT_VALUE_CHANGED 当文本区域的内容已更改时。
- LV_EVENT_APPLY 当LV_KEY_ENTER发送到处于单行模式的文本区域时。
了解有关 事件 的更多内容。
按键处理
文本框可处理以下按键:
- LV_KEY_UP/DOWN/LEFT/RIGHT 移动光标
- Any character 将字符添加到当前光标位置
了解有关 按键 的更多内容。
范例
简单的文本框
上述效果的示例代码:
密码模式的文本区域
上述效果的示例代码:
文字自动格式化
上述效果的示例代码: