
文本框是一个基础对象,其上面有一个标签(Label)和一个光标(Cursor)。
可以向文本框中添加文本或字符。长行会被换行,当文本内容变得足够长时,可以滚动文本框。
1.常用方法
创建textarea文本框:
lv_obj_t * lv_textarea_create(lv_obj_t * parent)
设置只有一行:
void lv_textarea_set_one_line(lv_obj_t * obj, bool en)
2.代码实现
void btnm_event_handler(lv_event_t* e){int code = lv_event_get_code(e);lv_obj_t* target = lv_event_get_target(e);lv_obj_t* textarea = lv_event_get_user_data(e);if(code == LV_EVENT_VALUE_CHANGED){// 获取单击的按钮编号uint16_t index = lv_btnmatrix_get_selected_btn(target);// 获取单击的按钮文本const char* btn_text = lv_btnmatrix_get_btn_text(target,index);// 条件判断if(strcmp(btn_text,LV_SYMBOL_BACKSPACE) == 0){lv_textarea_del_char(textarea);}else if (strcmp(btn_text,LV_SYMBOL_NEW_LINE) == 0){printf("enter clicked\n");lv_event_send(textarea, LV_EVENT_READY, NULL);}else{// 向文本框中填入内lv_textarea_add_text(textarea,btn_text);}}}static void textarea_event_handler(lv_event_t * e){lv_obj_t * ta = lv_event_get_target(e);printf("Enter was pressed. The current text is: %s", lv_textarea_get_text(ta));}void demo6(){// 文本框lv_obj_t* textarea = lv_textarea_create(lv_scr_act());lv_textarea_set_one_line(textarea,true);lv_obj_align(textarea,LV_ALIGN_TOP_MID,0,10);lv_obj_set_width(textarea,220);lv_obj_add_state(textarea, LV_STATE_FOCUSED);lv_obj_add_event_cb(textarea, textarea_event_handler, LV_EVENT_READY, textarea);// 创建矩阵按钮lv_obj_t* btnm = lv_btnmatrix_create(lv_scr_act());// 设置矩阵按钮的显示lv_btnmatrix_set_map(btnm,map);lv_obj_set_width(btnm,220);lv_obj_align(btnm,LV_ALIGN_TOP_MID,0,80);lv_obj_clear_flag(btnm, LV_OBJ_FLAG_CLICK_FOCUSABLE);// 事件处理lv_obj_add_event_cb(btnm,btnm_event_handler,LV_EVENT_VALUE_CHANGED,textarea);}
效果:
