一.按钮矩阵部件
1.知识概览
2.函数接口
1.lv_btnmatrix_set_btn_ctrl
在 LVGL(LittlevGL)中,lv_btnmatrix_set_btn_ctrl()
函数用于设置按钮矩阵(Button Matrix)中单个按钮的控制选项。该函数可以用来定制按钮矩阵中按钮的行为、样式和其他属性。
以下是 lv_btnmatrix_set_btn_ctrl()
函数的函数原型:
void lv_btnmatrix_set_btn_ctrl(lv_obj_t * btnmatrix, uint32_t btn_id, lv_btn_state_t state, lv_btn_ctrl_t ctrl);
参数说明:
btnmatrix
:按钮矩阵对象btn_id
:按钮的索引state
:按钮状态(例如LV_BTNMATRIX_CTRL_CHECKED
、LV_BTNMATRIX_CTRL_DISABLED
等等)ctrl
:按钮控制选项(例如LV_BTNMATRIX_CTRL_HIDDEN
、LV_BTNMATRIX_CTRL_NO_REPEAT
等等)
通过调用这个函数,可以针对特定的按钮矩阵中的按钮设置不同的控制选项。这样可以实现诸如隐藏、禁用、重复等特殊行为。
注意,在使用这个函数之前,需要先创建一个按钮矩阵对象,并确保按钮矩阵中按钮的数量和索引是正确的。
示例代码如下所示:
// 创建一个按钮矩阵对象
lv_obj_t *btnmatrix = lv_btnmatrix_create(lv_scr_act(), NULL);
// 设置按钮矩阵的大小和位置
lv_obj_set_size(btnmatrix, 200, 200);
lv_obj_set_pos(btnmatrix, 50, 50);
// 设置第一个按钮为禁用状态
lv_btnmatrix_set_btn_ctrl(btnmatrix, 0, LV_BTNMATRIX_CTRL_CHECKED, false);
在这个示例中,我们使用 lv_btnmatrix_create()
函数创建了一个按钮矩阵对象,并进行了基本的设置。然后,使用 lv_btnmatrix_set_btn_ctrl()
函数将第一个按钮的状态设置为禁用(LV_BTNMATRIX_CTRL_CHECKED
和 false
)。这样可以禁用第一个按钮。
2.lv_btnmatrix_set_btn_width
lv_btnmatrix_set_btn_width()
函数用于设置按钮矩阵(Button Matrix)中按钮的宽度。通过调用此函数,您可以为按钮矩阵中的每个按钮指定特定的宽度。
以下是 lv_btnmatrix_set_btn_width()
函数的函数原型:
void lv_btnmatrix_set_btn_width(lv_obj_t * btnm, uint8_t btn_id, uint8_t width);
参数说明:
btnm
:按钮矩阵对象btn_id
:按钮的索引width
:按钮的宽度,以像素为单位
使用该函数之前,您需要先创建一个按钮矩阵对象,并确保按钮矩阵中按钮的数量和索引是正确的。
示例代码如下所示:
// 创建一个按钮矩阵对象
lv_obj_t *btnmatrix = lv_btnmatrix_create(lv_scr_act(), NULL);
// 设置按钮矩阵的大小和位置
lv_obj_set_size(btnmatrix, 200, 200);
lv_obj_set_pos(btnmatrix, 50, 50);
// 将第一个按钮的宽度设置为 50 像素
lv_btnmatrix_set_btn_width(btnmatrix, 0, 50);
在上述示例中,创建了一个按钮矩阵对象,并设置了其大小和位置。然后,使用 lv_btnmatrix_set_btn_width()
函数将第一个按钮的宽度设置为 50 像素。
注意,上述示例仅为示范目的,您可以根据您的需求为按钮矩阵中的任何按钮设置不同的宽度。
3.代码实例
static void event_cb(lv_event_t *e)
{
lv_obj_t* target=lv_event_get_target(e); //获取触发源
uint8_t id=lv_btnmatrix_get_selected_btn(target); //获取序列id
printf("%s",lv_btnmatrix_get_btn_text(target,id)); //获取文本
}
void my_lvgl(void)
{
lv_obj_t* btnm=lv_btnmatrix_create(lv_scr_act()); //按钮矩阵部件
static const char* map[]={"#ff0000 btn1#","\n","btn2","btn2"}; //设置按钮数量和文本
lv_btnmatrix_set_map(btnm,map);
lv_btnmatrix_set_btn_width(btnm,2,3); //设置序号2的按钮,的相对宽度为3
lv_obj_add_event_cb(btnm,event_cb,LV_EVENT_VALUE_CHANGED,NULL); //设置值改变的时候触发事件
lv_btnmatrix_set_btn_ctrl(btnm,0,LV_BTNMATRIX_CTRL_CHECKABLE); //设置允许状态切换属性
lv_btnmatrix_set_btn_ctrl(btnm,0,LV_BTNMATRIX_CTRL_RECOLOR); //设置允许文本重新着色
lv_btnmatrix_set_btn_ctrl_all(btnm,LV_BTNMATRIX_CTRL_CHECKABLE); //设置允许所有状态切换属性
lv_btnmatrix_set_one_checked(btnm,true); //开启单次选中属性
}
二.文本区域部件
1.知识概览
2.函数接口
1.lv_textarea_set_one_line
lv_textarea_set_one_line()
函数用于设置文本区域(Textarea)是否限制为单行显示。
以下是 lv_textarea_set_one_line()
函数的函数原型:
void lv_textarea_set_one_line(lv_obj_t * textarea, bool one_line);
参数说明:
textarea
:文本区域对象one_line
:设置为true
表示文本区域只显示单行,设置为false
表示可以显示多行
使用该函数之前,您需要先创建一个文本区域对象。
示例代码如下所示:
// 创建一个文本区域对象
lv_obj_t *textarea = lv_textarea_create(lv_scr_act(), NULL);
// 设置文本区域的大小和位置
lv_obj_set_size(textarea, 200, 100);
lv_obj_set_pos(textarea, 50, 50);
// 设置文本区域为单行显示
lv_textarea_set_one_line(textarea, true);
以上示例中,创建了一个文本区域对象,并设置了其大小和位置。然后,使用 lv_textarea_set_one_line()
函数将文本区域设置为单行显示。
注意,如果设置为单行显示,文本区域的内容会根据文本框的宽度自动换行。如果设置为多行显示,则文本区域可以显示多行文本。
2.lv_textarea_set_password_mode
lv_textarea_set_password_mode()
函数用于将文本区域(Textarea)设置为密码模式,以隐藏用户输入的内容。
以下是 lv_textarea_set_password_mode()
函数的函数原型:
void lv_textarea_set_password_mode(lv_obj_t * textarea, bool password_mode);
参数说明:
textarea
:文本区域对象password_mode
:设置为true
表示启用密码模式,设置为false
表示禁用密码模式
使用该函数之前,您需要先创建一个文本区域对象。
示例代码如下所示:
// 创建一个文本区域对象
lv_obj_t *textarea = lv_textarea_create(lv_scr_act(), NULL);
// 设置文本区域的大小和位置
lv_obj_set_size(textarea, 200, 100);
lv_obj_set_pos(textarea, 50, 50);
// 将文本区域设置为密码模式
lv_textarea_set_password_mode(textarea, true);
在上述示例中,我们创建了一个文本区域对象,并设置了其大小和位置。然后,使用 lv_textarea_set_password_mode()
函数将文本区域设置为密码模式。
当文本区域设置为密码模式时,用户输入的内容将会被隐藏,以保护用户的隐私和安全。通常在需要输入密码的场景中使用密码模式。
3.代码实例
#include "my_lvgl.h"
#include "lvgl.h"
static void event_cb(lv_event_t *e)
{
lv_obj_t* target=lv_event_get_target(e);
const char* txt=lv_textarea_get_text(target);//获取文本
printf("%s\n",txt);
}
//LV_EVENT_FOCUSED 判断是否聚焦到文本框,然后绑定键盘
void my_lvgl(void)
{
lv_obj_t* ba=lv_textarea_create(lv_scr_act()); //文本区域组件
lv_textarea_add_char(ba,'A');//添加一个字符
lv_textarea_add_text(ba,"BCD");//添加一个字符串
lv_obj_t* keyboard=lv_keyboard_create(lv_scr_act()); //键盘组件
lv_keyboard_set_textarea(keyboard,ba); //绑定键盘组件和文本组件
// lv_textarea_set_cursor_pos(ba,0); //输入到光标左侧
lv_textarea_del_char(ba); //删除光标左侧的一个字符
lv_textarea_del_char_forward(ba); //删除光标友侧的一个字符
lv_textarea_set_one_line(ba,true); //设置单行模式
lv_textarea_set_password_mode(ba,true); //设置密码模式
lv_textarea_set_password_show_time(ba,100);//设置密码显示时间
lv_textarea_set_accepted_chars(ba,"0123456789"); //设置限制输入
lv_textarea_set_max_length(ba,6); //设置长度
lv_textarea_set_placeholder_text(ba,"password"); //输入占位符
lv_obj_add_event_cb(ba,event_cb,LV_EVENT_VALUE_CHANGED,NULL); //设置值改变的时候触发事件
}