文本输入控件¶
概述¶
文本输入控件提供文字编辑和虚拟键盘能力,适用于表单填写、搜索框、密码输入等嵌入式交互场景。包括文本输入框和虚拟键盘两个控件。
TextInput¶
文本输入框控件,支持光标移动、字符插入/删除、占位文字、文本变更回调和提交回调。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化文本输入框 |
|
设置文本内容 |
|
获取文本内容 |
|
清空文本 |
|
在光标处插入字符 |
|
删除光标前一个字符 |
|
删除光标后一个字符 |
|
设置光标位置 |
|
光标左移 |
|
光标右移 |
|
光标移到行首 |
|
光标移到行尾 |
|
设置字体 |
|
设置文字颜色 |
|
设置占位文字 |
|
设置占位文字颜色 |
|
设置光标颜色 |
|
设置最大输入长度 |
|
设置文本变更回调 |
|
设置提交回调 |
回调函数原型¶
typedef void (*egui_view_textinput_on_text_changed_t)(egui_view_t *self, const char *text);
typedef void (*egui_view_textinput_on_submit_t)(egui_view_t *self, const char *text);
结构体字段¶
字段 |
类型 |
说明 |
|---|---|---|
|
|
文本缓冲区 |
|
|
当前文本长度 |
|
|
光标位置 |
|
|
最大输入长度 |
|
|
文字颜色 |
|
|
占位文字颜色 |
|
|
光标颜色 |
|
|
文字对齐方式 |
配置选项¶
宏 |
说明 |
|---|---|
|
文本输入最大字符数 |
使用说明¶
TextInput 内置光标闪烁定时器,聚焦时自动显示闪烁光标
文本超出控件宽度时自动水平滚动,通过
scroll_offset_x内部管理on_text_changed在每次字符插入或删除后触发on_submit在用户按下回车键(通过 Keyboard 的 Enter 键)时触发通常与 Keyboard 控件配合使用,也可通过外部按键事件直接调用
insert_char/delete_char
代码示例¶
static egui_view_textinput_t input;
static void on_text_changed(egui_view_t *self, const char *text)
{
EGUI_LOG_INF("Text: %s\n", text);
}
static void on_submit(egui_view_t *self, const char *text)
{
EGUI_LOG_INF("Submit: %s\n", text);
}
void init_ui(egui_core_t *core)
{
egui_view_textinput_init(EGUI_VIEW_OF(&input), core);
egui_view_set_position(EGUI_VIEW_OF(&input), 10, 10);
egui_view_set_size(EGUI_VIEW_OF(&input), 200, 30);
egui_view_textinput_set_placeholder(EGUI_VIEW_OF(&input), "Enter text...");
egui_view_textinput_set_max_length(EGUI_VIEW_OF(&input), 32);
egui_view_textinput_set_on_text_changed(EGUI_VIEW_OF(&input),
on_text_changed);
egui_view_textinput_set_on_submit(EGUI_VIEW_OF(&input), on_submit);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&input));
}
Keyboard¶
虚拟键盘控件,继承自 Group,提供完整的 QWERTY 键盘布局,支持大小写切换和符号模式。与 TextInput 配合使用,自动处理键盘弹出时的视图避让。
效果展示¶
前置条件¶
Keyboard 需要同时启用按键和焦点支持:
#define EGUI_CONFIG_FUNCTION_SUPPORT_KEY 1
#define EGUI_CONFIG_FUNCTION_SUPPORT_FOCUS 1
API¶
函数 |
说明 |
|---|---|
|
初始化键盘 |
|
设置按键字体 |
|
显示键盘并绑定目标输入框 |
|
隐藏键盘 |
|
设置键盘模式 |
键盘模式常量¶
常量 |
值 |
说明 |
|---|---|---|
|
0 |
小写字母 |
|
1 |
大写字母 |
|
2 |
符号 |
布局常量¶
常量 |
说明 |
|---|---|
|
键盘行数(4) |
|
按键总数(31) |
|
默认宽度(屏幕宽度) |
|
默认高度(128) |
代码示例¶
static egui_view_textinput_t input;
static egui_view_keyboard_t keyboard;
void init_ui(egui_core_t *core)
{
// 初始化输入框
egui_view_textinput_init(EGUI_VIEW_OF(&input), core);
egui_view_set_position(EGUI_VIEW_OF(&input), 10, 10);
egui_view_set_size(EGUI_VIEW_OF(&input), 220, 30);
egui_view_textinput_set_placeholder(EGUI_VIEW_OF(&input), "Tap to type");
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&input));
// 初始化键盘
egui_view_keyboard_init(EGUI_VIEW_OF(&keyboard), core);
egui_view_set_position(EGUI_VIEW_OF(&keyboard),
0, EGUI_CONFIG_SCREEN_HEIGHT - EGUI_KEYBOARD_DEFAULT_HEIGHT);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&keyboard));
}
void show_keyboard(void)
{
egui_view_keyboard_show(EGUI_VIEW_OF(&keyboard), EGUI_VIEW_OF(&input));
}
void hide_keyboard(void)
{
egui_view_keyboard_hide(EGUI_VIEW_OF(&keyboard));
}
特殊按键索引¶
常量 |
值 |
说明 |
|---|---|---|
|
19 |
Shift 键 |
|
27 |
退格键 |
|
28 |
模式切换键 |
|
29 |
空格键 |
|
30 |
回车键 |
使用说明¶
Keyboard 在调用
show()时自动绑定目标 TextInput,按键输入直接写入目标输入框键盘弹出时会自动调整被遮挡的视图位置(键盘避让),隐藏时恢复原位
Shift 键切换大小写,Mode 键在字母和符号之间切换
键盘宽度默认为屏幕宽度
EGUI_CONFIG_SCREEN_WIDTH,适配不同分辨率需调整按键宽度常量键盘内部使用 LinearLayout 排列按键行,每行按键数量固定