前面讲述了独立按钮以及矩阵按钮,会了前两者之后,接下来的矩阵键盘按钮可能会惊艳到你。先看仿真效果;
v_kb 键盘有 2 种模式,一种是 LV_KB_MODE_TEXT 文本键盘,另一种是 LV_KB_MODE_NUM 数字键盘,其中文本键盘复杂一些,它里面包含了小写,大写,符号三类键盘,文本键盘
中的三类键盘是通过如下方式来切换的:
1) 点击 键切换到大写键盘
2) 点击 键切换到小写键盘
3) 点击 键切换到符号
LV_SYMBOL_OK: Apply确认,对应键盘上的 键,点击会触发LV_EVENT_APPLY事件
LV_SYMBOL_CLOSE: Close 关闭,对应键盘上的 键,点击会触发 LV_EVENT_C ANCEL 事件
LV_SYMBOL_LEFT: 将光标向左移动一步
LV_SYMBOL_RIGHT: 将光标向右移动一步
** “ABC”: 切换到大写键盘
“abc”: 切换到小写键盘
“Enter”: 换行
“Bkps”: 删除光标左侧的一个字符**
这个仿真出来的键盘就是littleVGL图形化界面上的一个简单控件,几行代码就完整的将其功能实现,接下来贴出代码:
`
void kb_test(void)
{
/*Create styles for the keyboard*/
static lv_style_t rel_style, pr_style;
lv_style_copy(&rel_style, &lv_style_btn_rel);
rel_style.body.radius = 0;
rel_style.body.border.width = 3;
lv_style_copy(&pr_style, &lv_style_btn_pr);
pr_style.body.radius = 0;
pr_style.body.border.width = 3;
/*Create a keyboard and apply the styles*/
lv_obj_t *btnmkeybord = lv_kb_create(lv_scr_act(), NULL); //创建键盘控件
lv_kb_set_cursor_manage(btnmkeybord , true);
lv_kb_set_style(btnmkeybord , LV_KB_STYLE_BG, &lv_style_transp_tight); //设置风格样式
lv_kb_set_style(btnmkeybord , LV_KB_STYLE_BTN_REL, &rel_style); //释放下的风格
lv_kb_set_style(btnmkeybord , LV_KB_STYLE_BTN_PR, &pr_style); //按下时的风格
/*Create a text area. The keyboard will write here*/
lv_obj_t *tag = lv_ta_create(lv_scr_act(), NULL);
lv_obj_align(tag , NULL, LV_ALIGN_IN_TOP_MID, 0, 10);
lv_ta_set_text(tag , "");
/*Assign the text area to the keyboard*/
lv_kb_set_ta(btnmkeybord , tag );
}
具体的整个仿真工程链接如下:
工程