Description
What MCU/Processor/Board and compiler are you using?
Ubuntu 24.04, SDL2 with vscode
What LVGL version are you using?
V9.3-dev
What do you want to achieve?
I want to remove the spacing between all buttons in this keyboard:
What have you tried so far?
Setting the pad to 0 of the LV_ITEMS of the keyboard, yet It doesn’t seem to affect the aspect of anything, I also tried to change the padding of the parent container, but it also didn’t seem to change anything…
Code to reproduce
I have created a style like this:
lv_style_t style_keyboard_cnt; // Container for keyboard
lv_style_t style_keyboard_btn; // Button style
static init_keyboard_style(void){
lv_style_init(&style_keyboard_cnt);
lv_style_set_pad_all(&style_keyboard_cnt, 0);
lv_style_set_pad_gap(&style_keyboard_cnt, 0);
lv_style_set_margin_all(&style_keyboard_cnt, 20);
lv_style_set_clip_corner(&style_keyboard_cnt, true);
lv_style_set_radius(&style_keyboard_cnt, LV_RADIUS_CIRCLE);
lv_style_set_border_width(&style_keyboard_cnt, 0);
lv_style_init(&style_keyboard_btn);
lv_style_set_radius(&style_keyboard_btn, 0);
lv_style_set_pad_all(&style_keyboard_btn, 1);
lv_style_set_pad_gap(&style_keyboard_btn, 0);
lv_style_set_margin_all(&style_keyboard_btn, 0);
lv_style_set_border_width(&style_keyboard_btn, 1);
lv_style_set_border_opa(&style_keyboard_btn, LV_OPA_50);
lv_style_set_border_color(&style_keyboard_btn, lv_palette_main(LV_PALETTE_GREY));
lv_style_set_border_side(&style_keyboard_btn, LV_BORDER_SIDE_FULL);
lv_style_set_radius(&style_keyboard_btn, 0);
//lv_style_set_text_color(&style_keyboard_btn, lv_palette_main(LV_PALETTE_RED));
}
And created a numpad:
static const char * numpad_map[] = {
"D", "E", "F", "AC", "\n",
"A", "B", "C", LV_SYMBOL_BACKSPACE, "\n",
"7", "8", "9", LV_SYMBOL_OK, "\n",
"4", "5", "6", LV_SYMBOL_CLOSE, "\n",
"1", "2", "3", "HEX","\n",
"+/-", "0", ",", "BIN", NULL
};
static const lv_buttonmatrix_ctrl_t numpad_ctrl[] = {
LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_6,
LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_6,
LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_6,
LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_6,
LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_6,
LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_4, LV_BUTTONMATRIX_CTRL_WIDTH_6
};
void numpad_init(void){
lv_obj_t *numpad_window = lv_obj_create(lv_screen_active());
//lv_obj_add_style(numpad_window, &style_keyboard_cnt, LV_PART_ITEMS);
lv_obj_t *numpad = lv_keyboard_create(numpad_window);
lv_obj_set_size(numpad_window, lv_pct(100), lv_pct(100));
lv_obj_set_size(numpad, lv_pct(50), lv_pct(50));
lv_obj_set_align(numpad, LV_ALIGN_BOTTOM_RIGHT);
lv_keyboard_set_map(numpad, LV_KEYBOARD_MODE_USER_1, numpad_map, numpad_hexadecimal_state_map);
lv_keyboard_set_mode(numpad, LV_KEYBOARD_MODE_USER_1);
lv_obj_add_style(numpad, &style_keyboard_btn, LV_PART_ITEMS);
}
Screenshot and/or video
Left LVGL Numpad, right the desired result, with a smaller spacing / padding between buttons