Skip to content

Latest commit

 

History

History
195 lines (139 loc) · 6.24 KB

textarea.rst

File metadata and controls

195 lines (139 loc) · 6.24 KB

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.

Parts and Styles

Usage

Add text

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

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

:cpp:expr:`lv_textarea_set_text(ta, "New text")` changes the whole text.

Placeholder

A placeholder text can be specified

Delete character

To delete a character from the left of the current cursor position use :cpp:expr:`lv_textarea_delete_char(textarea)`.

To delete from the right use :cpp:expr:`lv_textarea_delete_char_forward(textarea)`

Move the cursor

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

You can step the cursor with

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

Hide the cursor

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

One line mode

The Text area can be configured to be on a single line with :cpp:expr:`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.

Password mode

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

By default, 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 does not exist in the font, * will be used. You can override the default character with :cpp:expr:`lv_textarea_set_password_bullet(textarea, "x")`.

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

The visibility time can be adjusted with :c:macro:`LV_TEXTAREA_DEF_PWD_SHOW_TIME` in lv_conf.h.

Accepted characters

You can set a list of accepted characters with :cpp:expr:`lv_textarea_set_accepted_chars(textarea, "0123456789.+-")`. Other characters will be ignored.

Max text length

The maximum number of characters can be limited with :cpp:expr:`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 :c:macro:`LV_LABEL_LONG_TXT_HINT` 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 :c:macro:`LV_LABEL_LONG_TXT_HINT` the scrolling and drawing will as fast as with "normal" short texts.

Select text

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

Events

See the events of the :ref:`Base object <lv_obj>` too.

Learn more about :ref:`events`.

Keys

  • LV_KEY_UP/DOWN/LEFT/RIGHT Move the cursor
  • Any character Add the character to the current cursor position

Learn more about :ref:`indev_keys`.

Example

API