Text area(文本框) (lv_textarea)

Overview(概述)

查看原文

The Text Area is a Base object with a Label and a cursor on it. Texts or characters can be added to it. Long lines are wrapped and when the text becomes long enough the Text area can be scrolled.

One line mode and password modes are supported.

文本框是一个 基础对象,其上面有一个 标签(Label) 和一个光标(cursor)。 我们可以向文本框中添加文本或字符。 长行会被换行,当文本内容变得足够长时(文本框可视区域容纳不下时),可以滚动文本框。

支持单行输入模式和密码输入模式。

Parts and Styles(部分和样式)

查看原文

  • LV_PART_MAIN The background of the text area. Uses all the typical backgrond style properties and the text related style properties including text_align to align the text to the left, right or center.

  • LV_PART_SCROLLBAR The scrollbar that is shown when the text is too long.

  • LV_PART_SELECTED Detemines the style of the selected text. Only text_color and bg_color style properties can be used. bg_color should be set directly on the label of the text area.

  • LV_PART_CURSOR Marks the position where the characters are inserted. The cursor's area is always the bounding box of the current character. A block cursor can be created by adding a background color and background opacity to LV_PART_CURSOR's style. The create line cursor leave the cursor transparent and set a left border. The anim_time style property sets the cursor's blink time.

  • LV_PART_TEXTAREA_PLACEHOLDER Unique to Text Area, allows styling the placeholder text.

  • LV_PART_MAIN 文本框的背景。使用所有组件都有的典型的背景样式属性和与文本相关的样式属性(包括 text_align )将文本向左、向右或居中对齐。

  • LV_PART_SCROLLBAR 文本内容过长时显示的滚动条。

  • LV_PART_SELECTED 确定选定文本 (label)的样式。只能使用 text_colorbg_color 样式属性。 bg_color 会直接应用在文本框的标签上。

  • LV_PART_CURSOR 字符插入位置的光标。光标的区域始终是当前字符的边界框。可以通过 anim_time 样式属性设置光标的闪烁时间。

  • LV_PART_TEXTAREA_PLACEHOLDER 文本占位符,文本框独有的部分。可以通过这部分设置文本占位符的样式。

Usage(用法)

Add text(添加文本)

查看原文

You can insert text or characters to the current cursor's position with:

  • lv_textarea_add_char(textarea, 'c')

  • lv_textarea_add_text(textarea, "insert this text")

To add wide characters like 'á', 'ß' or CJK characters use lv_textarea_add_text(ta, "á").

lv_textarea_set_text(ta, "New text") changes the whole text.

您可以使用以下命令在光标的当前位置插入文本或字符:

  • lv_textarea_add_char(textarea, 'c')

  • lv_textarea_add_text(textarea, "插入此文本")

要添加宽字符,如 'á''ß' 或 CJK 字符,请使用 lv_textarea_add_text(ta, "á")

lv_textarea_set_text(ta, "New text") 会改变(清空再覆盖)文本框中的所有内容。

Placeholder(占位符)

查看原文

A placeholder text can be specified - which is displayed when the Text area is empty - with lv_textarea_set_placeholder_text(ta, "Placeholder text")

您可以通过 lv_textarea_set_placeholder_text(ta, "Placeholder text") 指定占位符文本,当文本框的内容为空时,所设置的占位符文本将会展示出来。

Delete character(删除字符)

查看原文

To delete a character from the left of the current cursor position use lv_textarea_del_char(textarea). To delete from the right use lv_textarea_del_char_forward(textarea)

要删除光标左侧的字符,请使用 lv_textarea_del_char(textarea) 。 要从光标右侧删除字符,请使用 lv_textarea_del_char_forward(textarea)

Move the cursor(移动光标)

查看原文

The cursor position can be modified directly like lv_textarea_set_cursor_pos(textarea, 10). The 0 position means "before the first characters", LV_TA_CURSOR_LAST means "after the last character"

You can step the cursor with

  • lv_textarea_cursor_right(textarea)

  • lv_textarea_cursor_left(textarea)

  • lv_textarea_cursor_up(textarea)

  • lv_textarea_cursor_down(textarea)

If lv_textarea_set_cursor_click_pos(textarea, true) is applied the cursor will jump to the position where the Text area was clicked.

光标的位置可以使用函数 lv_textarea_set_cursor_pos(textarea, 10) 直接修改。 第二个参数为你要指定的光标的位置,要注意的是:

  • 0 表示将光标移动到 “第一个字符之前”,

  • LV_TEXTAREA_CURSOR_LAST 表示将光标移动到 “最后一个字符之后”

您可以使用下面这些接口函数修改光标位置:

  • lv_textarea_cursor_up(textarea)

  • lv_textarea_cursor_down(textarea)

  • lv_textarea_cursor_left(textarea)

  • lv_textarea_cursor_right(textarea)

如果设置了 lv_textarea_set_cursor_click_pos(textarea, true) 那光标会跟随触摸跳转位置(在文本框范围内)

Hide the cursor(隐藏光标)

查看原文

The cursor is always visible, however it can be a good idea to style it to be visible only in LV_STATE_FOCUSED state.

一般情况下光标始终可见,但最好将其样式设置为仅在 LV_STATE_FOCUSED 状态下(聚焦状态)可见。

One line mode(单行模式)

查看原文

The Text area can be configured to be on a single line with lv_textarea_set_one_line(textarea, true). In this mode the height is set automatically to show only one line, line break characters are ignored, and word wrap is disabled.

可以使用 lv_textarea_set_one_line(textarea, true) 将文本框配置为单行输入模式。 在这个模式下,高度自动设置为仅显示一行,忽略换行符,并禁用自动换行。

Password mode(密码模式)

查看原文

The text area supports password mode which can be enabled with lv_textarea_set_password_mode(textarea, true).

If the (Bullet, U+2022) character exists in the font, the entered characters are converted to it after some time or when a new character is entered. If not exists, * will be used.

In password mode lv_textarea_get_text(textarea) returns the actual text entered, not the bullet characters.

The visibility time can be adjusted with LV_TEXTAREA_DEF_PWD_SHOW_TIME) in lv_conf.h.

文本框支持密码模式,可以通过 lv_textarea_set_password_mode(textarea, true) 启用该模式。

如果字体中存在 (Bullet, U+2022) 字符,则将输入的字符会在一定时间后或者输入新字符时自动转换为该字符。 如果 不存在,* 将被使用。

在密码模式下 lv_textarea_get_text(textarea) 返回的是输入的实际文本,而不是 字符。

密码模式下,实际输入文本的可见时间可以通过 lv_conf.h 中的 LV_TEXTAREA_DEF_PWD_SHOW_TIME 进行调整。

Accepted characters(字符白名单)

查看原文

You can set a list of accepted characters with lv_textarae_set_accepted_chars(textarea, "0123456789.+-"). Other characters will be ignored.

您可以使用 lv_textarea_set_accepted_chars(textarea, "0123456789.+-") 设置可接受字符列表(白名单)。输入其他字符将被忽略。

Max text length(设置文本长度)

查看原文

The maximum number of characters can be limited with lv_textarea_set_max_length(textarea, max_char_num)

可以使用 lv_textarea_set_max_length(textarea, max_char_num) 设置文本框可容纳的最大字符数

Very long texts(超长文本)

查看原文

If there is a very long text in the Text area (e. g. > 20k characters), scrolling and drawing might be slow. However, by enabling LV_LABEL_LONG_TXT_HINT   1 in lv_conf.h the performance can be hugely improved. This will save some additional information about the label to speed up its drawing. Using LV_LABEL_LONG_TXT_HINT the scrolling and drawing will as fast as with "normal" short texts.

如果文本框中有很长的文本(例如 > 20k 个字符),可能会导致滚动和绘制速度很慢。 但是,如果在 lv_conf.h 中启用 LV_LABEL_LONG_TXT_HINT 1,那么这个问题可以得到很好的改善。 这将会保存有关标签(label)的一些附加信息以加快其绘制速度。 使用 LV_LABEL_LONG_TXT_HINT 后,滚动和绘制速度将与 “普通” 的短文本一样快。

Select text(选择文本)

查看原文

Any part of the text can be selected if enabled with lv_textarea_set_text_selection(textarea, true). This works much like when you select text on your PC with your mouse.

如果使用函数 lv_textarea_set_text_selection(textarea, true) 启用文本选择功能,则可以选择文本的任何部分。这和我们使用鼠标在电脑上选择文字非常相似。

Events(事件)

查看原文

  • LV_EVENT_INSERT Sent right before a character or text is inserted. The event paramter is the text about to be inserted. lv_textarea_set_insert_replace(textarea, "New text") replaces the text to insert. The new text cannot be in a local variable which is destroyed when the event callback exists. "" means do not insert anything.

  • LV_EVENT_VALUE_CHANGED Sent when the content of the text area has been changed.

  • LV_EVENT_APPLY Sent when LV_KEY_ENTER is pressed (or(sent) to a one line text area.

See the events of the Base object too.

Learn more about Events.

  • LV_EVENT_INSERT 在插入字符或文本之前发送该事件。 事件参数是即将插入的文本。可以通过接口 lv_textarea_set_insert_replace(textarea, "New text") 将要计划插入的文本替换为其他文本。 注意替换的新文本不能时局部变量,也就是不能在回调函数直接创建局部变量保存新文本。 "" 表示不插入任何内容。

  • LV_EVENT_VALUE_CHANGED 当文本框的内容被改变时发送该事件。

  • LV_EVENT_APPLY 在按下 LV_KEY_ENTER 时发送到单行文本框。

参见 Base object 的事件。

详细了解 事件

Keys(按键)

查看原文

  • LV_KEY_UP/DOWN/LEFT/RIGHT Move the cursor

  • Any character Add the character to the current cursor position

Learn more about Keys.

  • LV_KEY_UP/DOWN/LEFT/RIGHT 移动光标

  • 任意字符 将字符添加到当前光标位置

了解有关 按键 的更多信息。

Example

Simple Text area

C code  

 GitHub
#include "../../lv_examples.h"
#if LV_USE_TEXTAREA && LV_BUILD_EXAMPLES

static void textarea_event_handler(lv_event_t * e)
{
    lv_obj_t * ta = lv_event_get_target(e);
    LV_LOG_USER("Enter was pressed. The current text is: %s", lv_textarea_get_text(ta));
}

static void btnm_event_handler(lv_event_t * e)
{
    lv_obj_t * obj = lv_event_get_target(e);
    lv_obj_t * ta = lv_event_get_user_data(e);
    const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj));

    if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_del_char(ta);
    else if(strcmp(txt, LV_SYMBOL_NEW_LINE) == 0) lv_event_send(ta, LV_EVENT_READY, NULL);
    else lv_textarea_add_text(ta, txt);

}

void lv_example_textarea_1(void)
{
    lv_obj_t * ta = lv_textarea_create(lv_scr_act());
    lv_textarea_set_one_line(ta, true);
    lv_obj_align(ta, LV_ALIGN_TOP_MID, 0, 10);
    lv_obj_add_event_cb(ta, textarea_event_handler, LV_EVENT_READY, ta);
    lv_obj_add_state(ta, LV_STATE_FOCUSED); /*To be sure the cursor is visible*/

    static const char * btnm_map[] = {"1", "2", "3", "\n",
                               "4", "5", "6", "\n",
                               "7", "8", "9", "\n",
                               LV_SYMBOL_BACKSPACE, "0", LV_SYMBOL_NEW_LINE, ""};

    lv_obj_t * btnm = lv_btnmatrix_create(lv_scr_act());
    lv_obj_set_size(btnm, 200, 150);
    lv_obj_align(btnm, LV_ALIGN_BOTTOM_MID, 0, -10);
    lv_obj_add_event_cb(btnm, btnm_event_handler, LV_EVENT_VALUE_CHANGED, ta);
    lv_obj_clear_flag(btnm, LV_OBJ_FLAG_CLICK_FOCUSABLE); /*To keep the text area focused on button clicks*/
    lv_btnmatrix_set_map(btnm, btnm_map);
}

#endif

MicroPython code  

 GitHub Simulator
def textarea_event_handler(e, ta):
    print("Enter was pressed. The current text is: " + ta.get_text())


def btnm_event_handler(e, ta):
    obj = e.get_target()
    txt = obj.get_btn_text(obj.get_selected_btn())
    if txt == lv.SYMBOL.BACKSPACE:
        ta.del_char()
    elif txt == lv.SYMBOL.NEW_LINE:
        lv.event_send(ta, lv.EVENT.READY, None)
    elif txt:
        ta.add_text(txt)


ta = lv.textarea(lv.scr_act())
ta.set_one_line(True)
ta.align(lv.ALIGN.TOP_MID, 0, 10)
ta.add_event_cb(lambda e: textarea_event_handler(e, ta), lv.EVENT.READY, None)
ta.add_state(lv.STATE.FOCUSED)   # To be sure the cursor is visible

btnm_map = ["1", "2", "3", "\n",
            "4", "5", "6", "\n",
            "7", "8", "9", "\n",
            lv.SYMBOL.BACKSPACE, "0", lv.SYMBOL.NEW_LINE, ""]
         
btnm = lv.btnmatrix(lv.scr_act())
btnm.set_size(200, 150)
btnm.align(lv.ALIGN.BOTTOM_MID, 0, -10)
btnm.add_event_cb(lambda e: btnm_event_handler(e, ta), lv.EVENT.VALUE_CHANGED, None)
btnm.clear_flag(lv.obj.FLAG.CLICK_FOCUSABLE)    # To keep the text area focused on button clicks
btnm.set_map(btnm_map)

Text area with password field

C code  

 GitHub
#include "../../lv_examples.h"
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES

static void ta_event_cb(lv_event_t * e);

static lv_obj_t * kb;

void lv_example_textarea_2(void)
{
    /*Create the password box*/
    lv_obj_t * pwd_ta = lv_textarea_create(lv_scr_act());
    lv_textarea_set_text(pwd_ta, "");
    lv_textarea_set_password_mode(pwd_ta, true);
    lv_textarea_set_one_line(pwd_ta, true);
    lv_obj_set_width(pwd_ta, lv_pct(40));
    lv_obj_set_pos(pwd_ta, 5, 20);
    lv_obj_add_event_cb(pwd_ta, ta_event_cb, LV_EVENT_ALL, NULL);

    /*Create a label and position it above the text box*/
    lv_obj_t * pwd_label = lv_label_create(lv_scr_act());
    lv_label_set_text(pwd_label, "Password:");
    lv_obj_align_to(pwd_label, pwd_ta, LV_ALIGN_OUT_TOP_LEFT, 0, 0);

    /*Create the one-line mode text area*/
    lv_obj_t * text_ta = lv_textarea_create(lv_scr_act());
    lv_textarea_set_one_line(text_ta, true);
    lv_textarea_set_password_mode(text_ta, false);
    lv_obj_set_width(text_ta, lv_pct(40));
    lv_obj_add_event_cb(text_ta, ta_event_cb, LV_EVENT_ALL, NULL);
    lv_obj_align(text_ta, LV_ALIGN_TOP_RIGHT, -5, 20);


    /*Create a label and position it above the text box*/
    lv_obj_t * oneline_label = lv_label_create(lv_scr_act());
    lv_label_set_text(oneline_label, "Text:");
    lv_obj_align_to(oneline_label, text_ta, LV_ALIGN_OUT_TOP_LEFT, 0, 0);

    /*Create a keyboard*/
    kb = lv_keyboard_create(lv_scr_act());
    lv_obj_set_size(kb,  LV_HOR_RES, LV_VER_RES / 2);

    lv_keyboard_set_textarea(kb, pwd_ta); /*Focus it on one of the text areas to start*/
}

static void ta_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * ta = lv_event_get_target(e);
    if(code == LV_EVENT_CLICKED || code == LV_EVENT_FOCUSED) {
        /*Focus on the clicked text area*/
        if(kb != NULL) lv_keyboard_set_textarea(kb, ta);
    }

    else if(code == LV_EVENT_READY) {
        LV_LOG_USER("Ready, current text: %s", lv_textarea_get_text(ta));
    }
}

#endif

MicroPython code  

 GitHub Simulator
def ta_event_cb(e):
    code = e.get_code()
    ta = e.get_target()
    if code == lv.EVENT.CLICKED or code == lv.EVENT.FOCUSED:
        # Focus on the clicked text area
        if kb != None:
            kb.set_textarea(ta)

    elif code == lv.EVENT.READY:
        print("Ready, current text: " + ta.get_text())


# Create the password box
LV_HOR_RES = lv.scr_act().get_disp().driver.hor_res
LV_VER_RES = lv.scr_act().get_disp().driver.ver_res

pwd_ta = lv.textarea(lv.scr_act())
pwd_ta.set_text("")
pwd_ta.set_password_mode(True)
pwd_ta.set_one_line(True)
pwd_ta.set_width(LV_HOR_RES // 2 - 20)
pwd_ta.set_pos(5, 20)
pwd_ta.add_event_cb(ta_event_cb, lv.EVENT.ALL, None)

# Create a label and position it above the text box
pwd_label = lv.label(lv.scr_act())
pwd_label.set_text("Password:")
pwd_label.align_to(pwd_ta, lv.ALIGN.OUT_TOP_LEFT, 0, 0)

# Create the one-line mode text area
text_ta = lv.textarea(lv.scr_act())
text_ta.set_width(LV_HOR_RES // 2 - 20)
text_ta.set_one_line(True)
text_ta.add_event_cb(ta_event_cb, lv.EVENT.ALL, None)
text_ta.set_password_mode(False)

text_ta.align(lv.ALIGN.TOP_RIGHT, -5, 20)

# Create a label and position it above the text box
oneline_label = lv.label(lv.scr_act())
oneline_label.set_text("Text:")
oneline_label.align_to(text_ta, lv.ALIGN.OUT_TOP_LEFT, 0, 0)

# Create a keyboard
kb = lv.keyboard(lv.scr_act())
kb.set_size(LV_HOR_RES, LV_VER_RES // 2)

kb.set_textarea(pwd_ta)  # Focus it on one of the text areas to start


Text auto-formatting

C code  

 GitHub
#include "../../lv_examples.h"
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES

static void ta_event_cb(lv_event_t * e);

static lv_obj_t * kb;

/**
 * Automatically format text like a clock. E.g. "12:34"
 * Add the ':' automatically.
 */
void lv_example_textarea_3(void)
{
    /*Create the text area*/
    lv_obj_t * ta = lv_textarea_create(lv_scr_act());
    lv_obj_add_event_cb(ta, ta_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
    lv_textarea_set_accepted_chars(ta, "0123456789:");
    lv_textarea_set_max_length(ta, 5);
    lv_textarea_set_one_line(ta, true);
    lv_textarea_set_text(ta, "");

    /*Create a keyboard*/
    kb = lv_keyboard_create(lv_scr_act());
    lv_obj_set_size(kb,  LV_HOR_RES, LV_VER_RES / 2);
    lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);
    lv_keyboard_set_textarea(kb, ta);
}

static void ta_event_cb(lv_event_t * e)
{
    lv_obj_t * ta = lv_event_get_target(e);
    const char * txt = lv_textarea_get_text(ta);
    if(txt[0] >= '0' && txt[0] <= '9' &&
        txt[1] >= '0' && txt[1] <= '9' &&
        txt[2] != ':')
    {
        lv_textarea_set_cursor_pos(ta, 2);
        lv_textarea_add_char(ta, ':');
    }
}

#endif

MicroPython code  

 GitHub Simulator
def ta_event_cb(e):
    ta = e.get_target()
    txt = ta.get_text()
    # print(txt)
    pos = ta.get_cursor_pos()
    # print("cursor pos: ",pos)
    # find position of ":" in text
    colon_pos= txt.find(":")
    # if there are more than 2 digits before the colon, remove the last one entered
    if colon_pos == 3:
        ta.del_char()
    if colon_pos != -1:
        # if there are more than 3 digits after the ":" remove the last one entered
        rest = txt[colon_pos:]
        if len(rest) > 3:
            ta.del_char()
            
    if len(txt) < 2:
        return
    if ":" in txt:
        return
    if  txt[0] >= '0' and txt[0] <= '9' and \
        txt[1] >= '0' and txt[1] <= '9':
        if len(txt) == 2 or txt[2] != ':' :
            ta.set_cursor_pos(2)
            ta.add_char(ord(':'))
#
# Automatically format text like a clock. E.g. "12:34"
# Add the ':' automatically
#
# Create the text area

LV_HOR_RES = lv.scr_act().get_disp().driver.hor_res
LV_VER_RES = lv.scr_act().get_disp().driver.ver_res

ta = lv.textarea(lv.scr_act())
ta.add_event_cb(ta_event_cb, lv.EVENT.VALUE_CHANGED, None)
ta.set_accepted_chars("0123456789:")
ta.set_max_length(5)
ta.set_one_line(True)
ta.set_text("")
ta.add_state(lv.STATE.FOCUSED)

# Create a keyboard
kb = lv.keyboard(lv.scr_act())
kb.set_size(LV_HOR_RES, LV_VER_RES // 2)
kb.set_mode(lv.keyboard.MODE.NUMBER)
kb.set_textarea(ta)



API

Enums

enum [anonymous]

Values:

enumerator LV_PART_TEXTAREA_PLACEHOLDER

Functions

LV_EXPORT_CONST_INT(LV_TEXTAREA_CURSOR_LAST)
lv_obj_t *lv_textarea_create(lv_obj_t *parent)

Create a text area object

参数

parent -- pointer to an object, it will be the parent of the new text area

返回

pointer to the created text area

void lv_textarea_add_char(lv_obj_t *obj, uint32_t c)

Insert a character to the current cursor position. To add a wide char, e.g. 'Á' use _lv_txt_encoded_conv_wc('Á)`

参数
  • obj -- pointer to a text area object

  • c -- a character (e.g. 'a')

void lv_textarea_add_text(lv_obj_t *obj, const char *txt)

Insert a text to the current cursor position

参数
  • obj -- pointer to a text area object

  • txt -- a '\0' terminated string to insert

void lv_textarea_del_char(lv_obj_t *obj)

Delete a the left character from the current cursor position

参数

obj -- pointer to a text area object

void lv_textarea_del_char_forward(lv_obj_t *obj)

Delete the right character from the current cursor position

参数

obj -- pointer to a text area object

void lv_textarea_set_text(lv_obj_t *obj, const char *txt)

Set the text of a text area

参数
  • obj -- pointer to a text area object

  • txt -- pointer to the text

void lv_textarea_set_placeholder_text(lv_obj_t *obj, const char *txt)

Set the placeholder text of a text area

参数
  • obj -- pointer to a text area object

  • txt -- pointer to the text

void lv_textarea_set_cursor_pos(lv_obj_t *obj, int32_t pos)

Set the cursor position

参数
  • obj -- pointer to a text area object

  • pos -- the new cursor position in character index < 0 : index from the end of the text LV_TEXTAREA_CURSOR_LAST: go after the last character

void lv_textarea_set_cursor_click_pos(lv_obj_t *obj, bool en)

Enable/Disable the positioning of the cursor by clicking the text on the text area.

参数
  • obj -- pointer to a text area object

  • en -- true: enable click positions; false: disable

void lv_textarea_set_password_mode(lv_obj_t *obj, bool en)

Enable/Disable password mode

参数
  • obj -- pointer to a text area object

  • en -- true: enable, false: disable

void lv_textarea_set_one_line(lv_obj_t *obj, bool en)

Configure the text area to one line or back to normal

参数
  • obj -- pointer to a text area object

  • en -- true: one line, false: normal

void lv_textarea_set_accepted_chars(lv_obj_t *obj, const char *list)

Set a list of characters. Only these characters will be accepted by the text area

参数
  • obj -- pointer to a text area object

  • list -- list of characters. Only the pointer is saved. E.g. "+-.,0123456789"

void lv_textarea_set_max_length(lv_obj_t *obj, uint32_t num)

Set max length of a Text Area.

参数
  • obj -- pointer to a text area object

  • num -- the maximal number of characters can be added (lv_textarea_set_text ignores it)

void lv_textarea_set_insert_replace(lv_obj_t *obj, const char *txt)

In LV_EVENT_INSERT the text which planned to be inserted can be replaced by an other text. It can be used to add automatic formatting to the text area.

参数
  • obj -- pointer to a text area object

  • txt -- pointer to a new string to insert. If "" no text will be added. The variable must be live after the event_cb exists. (Should be global or static)

void lv_textarea_set_text_selection(lv_obj_t *obj, bool en)

Enable/disable selection mode.

参数
  • obj -- pointer to a text area object

  • en -- true or false to enable/disable selection mode

void lv_textarea_set_password_show_time(lv_obj_t *obj, uint16_t time)

Set how long show the password before changing it to '*'

参数
  • obj -- pointer to a text area object

  • time -- show time in milliseconds. 0: hide immediately.

void lv_textarea_set_align(lv_obj_t *obj, lv_text_align_t align)

Deprecated: use the normal text_align style property instead Set the label's alignment. It sets where the label is aligned (in one line mode it can be smaller than the text area) and how the lines of the area align in case of multiline text area

参数
  • obj -- pointer to a text area object

  • align -- the align mode from ::lv_text_align_t

const char *lv_textarea_get_text(const lv_obj_t *obj)

Get the text of a text area. In password mode it gives the real text (not '*'s).

参数

obj -- pointer to a text area object

返回

pointer to the text

const char *lv_textarea_get_placeholder_text(lv_obj_t *obj)

Get the placeholder text of a text area

参数

obj -- pointer to a text area object

返回

pointer to the text

lv_obj_t *lv_textarea_get_label(const lv_obj_t *obj)

Get the label of a text area

参数

obj -- pointer to a text area object

返回

pointer to the label object

uint32_t lv_textarea_get_cursor_pos(const lv_obj_t *obj)

Get the current cursor position in character index

参数

obj -- pointer to a text area object

返回

the cursor position

bool lv_textarea_get_cursor_click_pos(lv_obj_t *obj)

Get whether the cursor click positioning is enabled or not.

参数

obj -- pointer to a text area object

返回

true: enable click positions; false: disable

bool lv_textarea_get_password_mode(const lv_obj_t *obj)

Get the password mode attribute

参数

obj -- pointer to a text area object

返回

true: password mode is enabled, false: disabled

bool lv_textarea_get_one_line(const lv_obj_t *obj)

Get the one line configuration attribute

参数

obj -- pointer to a text area object

返回

true: one line configuration is enabled, false: disabled

const char *lv_textarea_get_accepted_chars(lv_obj_t *obj)

Get a list of accepted characters.

参数

obj -- pointer to a text area object

返回

list of accented characters.

uint32_t lv_textarea_get_max_length(lv_obj_t *obj)

Get max length of a Text Area.

参数

obj -- pointer to a text area object

返回

the maximal number of characters to be add

bool lv_textarea_text_is_selected(const lv_obj_t *obj)

Find whether text is selected or not.

参数

obj -- pointer to a text area object

返回

whether text is selected or not

bool lv_textarea_get_text_selection(lv_obj_t *obj)

Find whether selection mode is enabled.

参数

obj -- pointer to a text area object

返回

true: selection mode is enabled, false: disabled

uint16_t lv_textarea_get_password_show_time(lv_obj_t *obj)

Set how long show the password before changing it to '*'

参数

obj -- pointer to a text area object

返回

show time in milliseconds. 0: hide immediately.

void lv_textarea_clear_selection(lv_obj_t *obj)

Clear the selection on the text area.

参数

obj -- pointer to a text area object

void lv_textarea_cursor_right(lv_obj_t *obj)

Move the cursor one character right

参数

obj -- pointer to a text area object

void lv_textarea_cursor_left(lv_obj_t *obj)

Move the cursor one character left

参数

obj -- pointer to a text area object

void lv_textarea_cursor_down(lv_obj_t *obj)

Move the cursor one line down

参数

obj -- pointer to a text area object

void lv_textarea_cursor_up(lv_obj_t *obj)

Move the cursor one line up

参数

obj -- pointer to a text area object

Variables

const lv_obj_class_t lv_textarea_class
struct lv_textarea_t

Public Members

lv_obj_t obj
lv_obj_t *label
char *placeholder_txt
char *pwd_tmp
const char *accepted_chars
uint32_t max_length
uint16_t pwd_show_time
lv_coord_t valid_x
uint32_t pos
lv_area_t area
uint32_t txt_byte_pos
uint8_t show
uint8_t click_pos
struct lv_textarea_t::[anonymous] cursor
uint32_t sel_start
uint32_t sel_end
uint8_t text_sel_in_prog
uint8_t text_sel_en
uint8_t pwd_mode
uint8_t one_line