LVGL(lv_textarea文本框控件)

文章目錄

    • 一、`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 虛擬鍵盤,可以輕松實現豐富的嵌入式觸控輸入界面。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906637.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906637.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906637.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java高階面經:數據庫篇】18、分布式事務:如何在分庫分表中實現高性能與一致性?

一、分布式事務核心挑戰:分庫分表下的一致性困境 在分布式系統架構中,分庫分表通過將數據分散存儲提升了擴展性和性能,但卻打破了傳統單庫事務的邊界,使得分布式事務成為保障數據一致性的核心難題。其挑戰主要體現在以下三方面: 1.1 ACID特性的分布式撕裂 原子性(Atomi…

【云吶】房地產企業固定資產如何管理

房產類固定資產如辦公樓、門面房、宿舍樓、庫房等,價值高、使用年限長、權屬復雜、變更流程多,是企業最為關鍵的資產類型之一。管理房產類資產不僅要“看得到”,更要“管得住”。 房產資產管理應從權屬明確開始。固定資產管理系統支持房產資產…

oracle數據庫生成awr報告,排查數據庫服務器CPU100%,系統卡頓,慢sql,根據sqlid查詢關鍵信息,如會話SID,客戶端機器名

AWR報告簡介 AWR是Oracle 10g版本推出的特性,全稱叫做 Automatic Workload Repository 全自動負載信息庫 。Oracle啟動后,會有后臺進程定時采集并保存系統快照信息,也可以手工創建快照。AWR通過對比兩個時間點的快照信息,生成該時間段的AWR報告,幫助DBA或開發人員了解 Ora…

kafka吞吐量提升總結

前言 原本自以為閱讀了很久kafka的源碼,對于kafka的了解已經深入到一定程度了,后面在某大廠的面試中,面試官詢問我,如果需要提升kafka的性能,應該怎么做,我發現我能答上來的點非常的少,也暴露了…

鴻蒙 HarmonyOS NEXT 系統 Preference 首選項使用全解析

鴻蒙HarmonyOS系統Preference首選項使用全解析 大家好,我是威哥。在鴻蒙應用開發里,用戶偏好設置的管理是極為重要的一環。HarmonyOS為我們提供了Preference組件,它能讓我們輕松實現應用設置界面,對用戶首選項進行高效管理。接下…

xdc約束學習

對clk的約束 //約束clk為 125M Hz create_clock -period 8.000 -name gt_refclk1_p -waveform {0.000 4.000} [get_ports gt_refclk1_p] 偽時鐘路徑,用于兩個時鐘域之間數據的交互 單邊性(unateness)對于時序很重要,因為它指定的…

在 Ubuntu 虛擬機中實現 HTML 表單與 C 語言 HTTP 服務器交互

一、環境說明 系統:Ubuntu 虛擬機(已安裝基本開發工具,如 GCC)目標:通過 C 語言服務器托管 HTML 表單頁面,并實現數據提交交互 二、核心文件準備 1. 創建 HTML 表單頁面(xunfei.html&#xf…

LVS 負載均衡集群應用實戰

前提:三臺虛擬機,有nginx,要做負載 1. LVS-server 安裝lvs管理軟件 [root@lvs-server ~]# yum -y install ipvsadm 程序包:ipvsadm(LVS管理工具) 主程序:/usr/sbin/ipvsadm 規則保存工具:/usr/sbin/ipvsadm-save > /path/to/file 配置文件:/etc/sysconfig/ipvsad…

鴻蒙進階——Framework之Want 隱式匹配機制概述

文章大綱 引言一、Want概述二、Want的類型1、顯式Want2、隱式Want3、隱式Want的匹配 三、隱式啟動Want 源碼概述1、有且僅有一個Ability匹配2、有多個Ability 匹配需要彈出選擇對話框3、ImplicitStartProcessor::ImplicitStartAbility3.1、GenerateAbilityRequestByAction3.1.1…

Rules and Monetization

The system creates rules that allow them to monetize. The system doesn’t just enforce rules — it creates them strategically to monetize control. 🔧 How It Works: Invent a rule (e.g., “You need a permit to sell food.”)Claim it’s for safety …

java中string類型的list集合放到redis的5種數據類型的那種比較合適呢,可以用StringRedisTemplate實現

在Java中,如何將一個String類型的List集合存儲到Redis中,并且應該選擇Redis的哪種數據類型。同時,用戶還問到是否可以使用StringRedisTemplate來實現。 首先,我需要回憶一下Redis的5種主要數據類型:字符串(…

基于DQN的學習資源難度匹配智能體

基于DQN的學習資源難度匹配智能體 下面我將實現一個基于DQN(深度Q網絡)的智能體,用于根據用戶的學習表現動態匹配適合難度的學習資源。這個系統可以應用于在線教育平臺,根據用戶的歷史表現自動調整推薦資源的難度級別。 1. 環境設置 首先我們需要定義學習環境,這里我創建…

OrangePi Zero2開發指南:從SDK獲取到交叉編譯全流程詳解

一、OrangePi Zero2 SDK說明 SDK 全稱 Software Development Kit,即軟件開發工具包。一般包括了一些工具(如交叉編譯工具鏈)、庫、文檔和示例代碼。香橙派的Linux SDK其實指的就是 orangepi-build 這套代碼集,orangepibuild 在腳…

MATLAB NLP 工具箱 文本預處理教程

文章目錄 前言一、文本預處理核心步驟二、MATLAB 實現示例三、高級預處理技術四、預處理流程整合五、性能優化與注意事項六、實戰案例:IMDB 影評預處理 前言 以下是 MATLAB 自然語言處理 (NLP) 工具箱的文本預處理教程,涵蓋核心步驟、代碼實現及最佳實踐…

大模型的量化與雙重量化(1)

文章目錄 大模型量化的含義和作用什么是量化量化的作用具體示例 雙重量化的含義和作用什么是雙重量化雙重量化的具體實現雙重量化的作用具體示例對比實際應用場景 大模型量化的含義和作用 什么是量化 量化是指將神經網絡中的參數(權重和激活值)從高精度…

ES6 新增 API 方法

ES6 新增 API 方法 目錄 ES6 新增 API 方法背景介紹數組方法1. Array.from()2. Array.of()3. find/findIndex4. includes5. flat/flatMap 對象方法1. Object.assign()2. Object.keys/values/entries3. Object.getOwnPropertyDescriptors() 字符串方法1. includes/startsWith/en…

vscode使用ssh鏈接服務器

vscode SSH vscode先下載remote ssh的插件,隨后在左邊的菜單欄里選擇遠程。 點擊新建連接,輸入用戶名和地址,-p參數指定端口 ssh ubuntu{ip} -p xxx 隨后就可以正常連接了,這里使用普通用戶的用戶名密碼,別用root。 配…

基于FPGA的電子萬年歷系統開發,包含各模塊testbench

目錄 1.課題概述 2.系統仿真結果 3.核心程序與模型 4.系統原理簡介 5.完整工程文件 1.課題概述 基于FPGA的電子萬年歷系統開發,包含各模塊testbench。主要包含以下核心模塊: 時鐘控制模塊:提供系統基準時鐘和計時功能。 日歷計算模塊&#xff1a…

C++ 的 out_ptr 和 inout_ptr

1 問題的起因 1.1 T** 或 T&* ? C 的智能指針可以通過 get() 和 * 的重載得到原始指針 T*&#xff0c;遇到這樣的 C 風格的函數的時候&#xff1a; void Process(Foo *ptr);std::unique_ptr<Foo> sp ...;Process(sp.get()); //調用 Process 函數Process() 函數以…

取消 Conda 默認進入 Base 環境

在安裝 Conda 后&#xff0c;每次打開終端時默認會進入 base 環境。可以通過以下方法取消這一默認設置。 方法一&#xff1a;使用命令行修改配置 在終端中輸入以下命令&#xff0c;將 auto_activate_base 參數設置為 false&#xff1a; conda config --set auto_activate_ba…