目录
一、文本区域
1、部件组成
2、部件操作
1、创建
2、添加文本
3、光标设置
4、删除文本
5、设置模式
6、限制输入
7、设置占位符
8、获取文本
9、比对文本内容
二、键盘
1、部件组成
2、部件操作
1、创建
2、关联文本框
3、设置按键弹窗
4、设置键盘类型
三、项目案例
一、文本区域
1、部件组成
主体(LV_PART_MAIN)
滚动条(LV_PART_SCROLLBAR)
所选文本(LV_PART_SELECTED)
光标(LV_PART_CURSOR)
占位符(TEXTAREA_PLACEHOLDER)
2、部件操作
1、创建
lv_obj_t *ta = lv_textarea_create(parent);
2、添加文本
lv_textarea_add_char(ta, 'A'); /* 添加一个字符到当前光标处 */
lv_textarea_add_text(ta, "BCDEF"); /* 添加字符串到当前光标处 */
lv_obj_t *keyboard = lv_keyboard_create(lv_scr_act()); /* 创建键盘部件 */
lv_keyboard_set_textarea(keyboard, ta); /* 关联键盘和文本区域部件 */
3、光标设置
lv_textarea_set_cursor_pos(ta, 0); /* 0:最左侧, LV_TEXTAREA_CURSOR_LAST:最右侧 */
4、删除文本
lv_textarea_del_char(ta); /* 删除光标左侧的一个字符 */
lv_textarea_del_char_forward(ta); /* 删除光标右侧的一个字符 */
5、设置模式
lv_textarea_set_one_line(ta, true); /* 单行模式 */
lv_textarea_set_password_mode(ta, true); /* 密码模式(隐藏输入的内容) */
lv_textarea_set_password_show_time(ta, 100); /* 密码显示时间 */
6、限制输入
lv_textarea_set_accepted_chars(ta,"0123456789"); /* 限制接收的字符 */
lv_textarea_set_max_length(ta,6); /* 限制字符长度 */
7、设置占位符
lv_textarea_set_placeholder_text(ta, "password"); /* 提示输入密码 */
8、获取文本
const char *txt = lv_textarea_get_text(ta); /* 获取文本框文本 */
9、比对文本内容
strcmp(const char *s1,const char *s2); /* 当s1=s2时,返回0 */
二、键盘
1、部件组成
主体(LV_PART_MAIN)文章来源:https://www.toymoban.com/news/detail-852197.html
按钮(LV_PART_ITEMS)文章来源地址https://www.toymoban.com/news/detail-852197.html
2、部件操作
1、创建
lv_obj_t *kb = lv_keyboard_create(parent);
2、关联文本框
lv_obj_t *ta = lv_textarea_create(lv_scr_act()); /* 创建文本区域部件 */
lv_keyboard_set_textarea(kb, ta); /* 关联键盘和文本区域部件 */
3、设置按键弹窗
lv_keyboard_set_popovers(kb, true); /* 允许按键弹窗提示 */
4、设置键盘类型
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER); /* 数字键盘模式 */
三、项目案例
#include "mygui.h"
#include "lvgl.h"
#include <stdio.h>
#include <stdbool.h>
/* 获取当前活动屏幕的宽高 */
#define scr_act_width() lv_obj_get_width(lv_scr_act())
#define scr_act_height() lv_obj_get_height(lv_scr_act())
static const lv_font_t *font; /* 定义字体 */
static lv_obj_t *keyboard; /* 键盘 */
static lv_obj_t *label_name; /* 用户名正误提示标签 */
static lv_obj_t *label_pass; /* 密码正误提示标签 */
static void name_event_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if(code == LV_EVENT_FOCUSED) /* 事件类型:被聚焦 */
{
lv_keyboard_set_textarea(keyboard, target); /* 关联用户名文本框和键盘 */
}
else if(code == LV_EVENT_VALUE_CHANGED) /* 事件类型:文本框的内容发生变化 */
{
const char *txt = lv_textarea_get_text(target); /* 获取文本框的文本 */
if(strcmp(txt,"meng") == 0) /* 判断用户名是否正确 */
{
lv_label_set_text(label_name, LV_SYMBOL_OK); /* 用户名正确,显示√ */
}
else
{
lv_label_set_text(label_name, ""); /* 用户名错误,不提示 */
}
}
}
static void pass_event_cb(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e); /* 获取事件类型 */
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if(code == LV_EVENT_FOCUSED) /* 事件类型:被聚焦 */
{
lv_keyboard_set_textarea(keyboard, target); /* 关联用户名文本框和键盘 */
}
else if(code == LV_EVENT_VALUE_CHANGED) /* 事件类型:文本框的内容发生变化 */
{
const char *txt = lv_textarea_get_text(target); /* 获取文本框的文本 */
if(strcmp(txt,"123456") == 0) /* 判断密码是否正确 */
{
lv_label_set_text(label_pass, LV_SYMBOL_OK); /* 密码正确,显示√ */
}
else
{
lv_label_set_text(label_pass, ""); /* 密码错误,不提示 */
}
}
}
void lv_wenbenkeybored(void)
{
font = &lv_font_montserrat_10;
/* 用户名文本框 */
lv_obj_t *textarea_name = lv_textarea_create(lv_scr_act()); /* 创建文本框 */
lv_obj_set_width(textarea_name, scr_act_width()/2); /* 设置宽度 */
lv_obj_set_style_text_font(textarea_name, font, LV_PART_MAIN); /* 设置字体 */
lv_obj_align(textarea_name, LV_ALIGN_CENTER, 0, -scr_act_height()/3 ); /* 设置位置 */
lv_textarea_set_one_line(textarea_name, true); /* 设置单行模式 */
lv_textarea_set_max_length(textarea_name, 6); /* 设置输入字符的最大长度 */
lv_textarea_set_placeholder_text(textarea_name, "user name"); /* 设置占位符 */
lv_obj_add_event_cb(textarea_name, name_event_cb, LV_EVENT_ALL, NULL); /* 添加文本框事件回调 */
/* 用户名正误提示标签 */
label_name = lv_label_create(lv_scr_act()); /* 创建标签 */
lv_label_set_text(label_name, ""); /* 默认不提示 */
lv_obj_set_style_text_font(label_name, font, LV_PART_MAIN); /* 设置字体 */
lv_obj_align_to(label_name, textarea_name, LV_ALIGN_OUT_RIGHT_MID, 5, 0); /* 设置位置 */
/* 密码文本框 */
lv_obj_t *textarea_pass = lv_textarea_create(lv_scr_act()); /* 创建文本框 */
lv_obj_set_width(textarea_pass, scr_act_width()/2); /* 设置宽度 */
lv_obj_set_style_text_font(textarea_pass, font, LV_PART_MAIN); /* 设置字体 */
lv_obj_align_to(textarea_pass, textarea_name, LV_ALIGN_OUT_BOTTOM_MID, 0, scr_act_height()/20); /* 设置位置 */
lv_textarea_set_one_line(textarea_pass, true); /* 设置单行模式 */
lv_textarea_set_password_mode(textarea_pass, true); /* 设置密码模式 */
lv_textarea_set_password_show_time(textarea_pass, 1000); /* 设置密码显示时间 */
lv_textarea_set_max_length(textarea_pass, 8); /* 设置输入字符的最大长度 */
lv_textarea_set_placeholder_text(textarea_pass, "password"); /* 设置占位符 */
lv_obj_add_event_cb(textarea_pass, pass_event_cb, LV_EVENT_ALL, NULL); /* 添加文本框事件回调 */
/* 密码正误提示标签 */
label_pass = lv_label_create(lv_scr_act()); /* 创建标签 */
lv_label_set_text(label_pass, ""); /* 默认不提示 */
lv_obj_set_style_text_font(label_pass, font, LV_PART_MAIN); /* 设置字体 */
lv_obj_align_to(label_pass, textarea_pass, LV_ALIGN_OUT_RIGHT_MID, 5, 0); /* 设置位置 */
/* 键盘 */
keyboard = lv_keyboard_create(lv_scr_act()); /* 创建键盘 */
lv_obj_set_size(keyboard, scr_act_width(), scr_act_height()/2); /* 设置大小 */
}
void my_gui(void)
{
lv_wenbenkeybored();
}
到了这里,关于LVGL——文本区域与键盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!