LVGL 8.2 Textarea

LVGL 8.2 Textarea

首页角色扮演月光之城仙剑情缘更新时间:2024-05-09
Simple Text area

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); } static 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); }

Text area with password field

static void ta_event_cb(lv_event_t* e); static lv_obj_t* kb; static 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)); } }

Text auto-formatting

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. */ static 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, ':'); } }

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved