文章目錄
- 一、`lv_textarea` 是什么?
- 二、基本用法
- 1. 創建 `lv_textarea` 對象
- 2. 設置提示文字(占位符)
- 3. 設置最大長度
- 4. 設置密碼模式(顯示為\*號)
- 5. 獲取和設置內容
- 6. 配合虛擬鍵盤使用(常用于觸摸屏)
- 三、常用 API 匯總
- 四、實際應用示例
- 五、注意事項
- 六、典型應用場景
- 總結
lv_textarea
是 LVGL(Light and Versatile Graphics Library)中用于實現**文本輸入框(多行或單行)**的控件,通常與虛擬鍵盤配合使用,是用戶輸入內容(如用戶名、密碼、配置參數等)時的關鍵組件。
一、lv_textarea
是什么?
lv_textarea
是一個支持編輯和滾動的文本顯示區域。它提供了如下功能:
- 文本顯示與換行
- 光標顯示與移動
- 支持字符插入與刪除
- 可設置最大長度、密碼模式
- 可與虛擬鍵盤結合使用
二、基本用法
1. 創建 lv_textarea
對象
lv_obj_t * ta = lv_textarea_create(lv_scr_act());
lv_obj_set_size(ta, 200, 100);
lv_obj_align(ta, LV_ALIGN_CENTER, 0, 0);
2. 設置提示文字(占位符)
lv_textarea_set_placeholder_text(ta, "請輸入內容...");
3. 設置最大長度
lv_textarea_set_max_length(ta, 32); // 最多輸入32字符
4. 設置密碼模式(顯示為*號)
lv_textarea_set_password_mode(ta, true);
5. 獲取和設置內容
const char *text = lv_textarea_get_text(ta);
lv_textarea_set_text(ta, "預設值");
6. 配合虛擬鍵盤使用(常用于觸摸屏)
lv_obj_t *kb = lv_keyboard_create(lv_scr_act());
lv_keyboard_set_textarea(kb, ta); // 關聯輸入框
三、常用 API 匯總
函數 | 說明 |
---|---|
lv_textarea_create(parent) | 創建文本框控件 |
lv_textarea_set_text() | 設置內容 |
lv_textarea_get_text() | 獲取內容 |
lv_textarea_set_cursor_pos() | 設置光標位置 |
lv_textarea_set_one_line(true) | 設置為單行輸入模式 |
lv_textarea_set_password_mode(true) | 開啟密碼模式(顯示為 * ) |
lv_textarea_set_placeholder_text() | 設置占位提示文本 |
lv_textarea_set_max_length(n) | 限制最大字符數 |
lv_textarea_add_char() | 插入字符 |
lv_textarea_del_char() | 刪除字符 |
四、實際應用示例
void create_textarea_with_keyboard(void) {lv_obj_t *ta = lv_textarea_create(lv_scr_act());lv_obj_set_size(ta, 200, 80);lv_textarea_set_placeholder_text(ta, "請輸入用戶名");lv_obj_t *kb = lv_keyboard_create(lv_scr_act());lv_keyboard_set_textarea(kb, ta);lv_obj_align(kb, LV_ALIGN_BOTTOM_MID, 0, 0);
}
五、注意事項
lv_textarea
默認支持多行輸入,如需單行模式需手動設置。- 結合鍵盤時需要明確焦點指向哪個輸入框。
- 當字符數達到最大長度后,輸入無效但不會報錯。
六、典型應用場景
- 用戶登錄輸入框(用戶名/密碼)
- 配置界面輸入參數(如 IP 地址、設備名等)
- 日志編輯、搜索框等需要輸入文字的界面
總結
lv_textarea
是 LVGL 中實現用戶交互輸入的核心控件,功能類似于桌面 GUI 中的輸入框(如 Qt 的 QLineEdit/QTextEdit)。通過合理使用其密碼模式、占位符、最大長度控制等功能,并配合 lv_keyboard
虛擬鍵盤,可以輕松實現豐富的嵌入式觸控輸入界面。