女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS應用自定義鍵盤解決方案

HarmonyOS開發者 ? 來源:HarmonyOS開發者技術 ? 2025-06-05 14:19 ? 次閱讀

概述

自定義鍵盤是一種替換系統默認鍵盤的解決方案,可實現鍵盤個性化交互。允許用戶結合業務需求與操作習慣,對按鍵布局進行可視化重構、設置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護層面,自定義鍵盤可以增強用戶輸入的安全性,避免敏感信息被截取或者泄露。本文介紹了自定義鍵盤的實現,并結合自定義鍵盤和系統鍵盤的切換、自定義鍵盤的布局避讓等場景,介紹了自定義鍵盤的實際使用方式。

自定義鍵盤的實現

自定義鍵盤的實現包括以下5個步驟:

自定義鍵盤布局實現

輸入控件綁定自定義鍵盤布局

自定義鍵盤輸入控制

自定義鍵盤光標控制

自定義鍵盤彈出與收起

自定義鍵盤布局實現

自定義鍵盤的布局以自定義組件的方式呈現,根據具體業務場景由開發者實現。自定義鍵盤的高度通過自定義組件根節點的height屬性設置,寬度不可設置,默認鋪滿屏幕。

@Component
exportstructCustomKeyboard{
build() {
 Column() {
  }
 // 修改自定義組件根節點的height屬性
  .height($r('app.float.keyboard_total_height'))
 }
}

輸入控件綁定自定義鍵盤布局

輸入控件(TextArea、TextInput、RichEditor、Search)支持通過customKeyboard屬性綁定自定義鍵盤布局。綁定自定義鍵盤后,輸入控件獲取焦點時,不會拉起系統鍵盤,而是加載指定的自定義鍵盤。本文后續以TextInput控件為例進行介紹。

代碼示例如下:

build() {
Column() {
 TextInput({
  placeholder:'綁定自定義鍵盤',
  text:this.inputText,
  controller:this.textInputController
  })
  // 綁定自定義鍵盤布局
   .customKeyboard(this.customKeyboard())
 }
}
@Builder
customKeyboard() {
CustomKeyboard()
}

自定義鍵盤輸入控制

自定義鍵盤可以攔截手勢事件,通過對狀態變量的修改,實現文本的輸入。

以英文鍵盤為例,監聽EnglishButton的onClick事件,修改狀態變量。

@Component
struct EnglishButton {
@ConsumeinputText: string;
 build() {
  Button(this.getEnglishText(this.item), { type: ButtonType.Normal })
   .onClick(() => {
   // 攔截自定義鍵盤按鈕的點擊事件,根據業務場景修改狀態變量
   this.inputText =this.keyBoardController.onInput(this.getEnglishText(this.item));
   })
 }
}

通過對狀態變量inputText的修改,實現文本輸入。

@Component
exportstructTextInputComponent{
@ProvideinputText:string='';
build() {
 Column() {
  TextInput({
   placeholder:'綁定自定義鍵盤',
   text:this.inputText,
   controller:this.textInputController
   })
  }
 }
}

自定義鍵盤光標控制

通過監聽TextInput的onTextSelectionChange生命周期,獲取初始光標位置、文本輸入后,調用TextInputController的caretPosition方法,設置最終光標位置。

獲取光標位置:

TextInput({
placeholder:'綁定自定義鍵盤',
text:this.inputText,
controller:this.textInputController
})
// 監聽光標位置變化
 .onTextSelectionChange((start:number, end:number) =>{
 this.keyBoardController.setCaretPosition(start, end);
 })

設置光標位置:

onChange(value: string) {
this.text = value;
if(this.keyBoardType !== Constants.SYSTEM_KEYBOARD) {
 // 設置光標位置
 this.textInputController?.caretPosition(this.targetCaretPos);
 }
}

自定義鍵盤彈出與收起

通過對焦點進行控制,可以實現鍵盤的彈出和收起。開發者也可以通過TextInputController的stopEditing方法控制鍵盤關閉,下面的自定義鍵盤示例中,點擊確認按鍵關閉自定義鍵盤。

onInput(value:string):string{
switch(value) {
 case'確定':
  this.textInputController?.stopEditing();
  break;
 }
returnthis.text;
}

自定義鍵盤和系統鍵盤的切換

當需要實現同一個輸入框內可以切換自定義鍵盤和系統鍵盤時,可以通過如下方式實現:

Tab欄點擊“123”、“ABC”按鈕,this.isCustomKeyboardAttach為true,TextInput綁定自定義鍵盤;點擊“中文”按鈕,this.isCustomKeyboardAttach為false,切換系統鍵盤。

TextInput({
 placeholder:'綁定自定義鍵盤',
 text:this.inputText,
 controller:this.textInputController
})
 .customKeyboard(this.isCustomKeyboardAttach ?this.customKeyboard() :null)

自定義鍵盤的布局避讓

使用系統提供的自定義鍵盤避讓功能

為了確保輸入框不被自定義鍵盤擋住,系統默認提供了輸入框避讓自定義鍵盤的能力。在TextInput組件的customKeyboard屬性設置supportAvoidance為true,開啟系統提供的自定義鍵盤避讓功能。

TextInput({
 placeholder:'綁定自定義鍵盤',
 text:this.inputText,
 controller:this.textInputController
})
 .customKeyboard(this.customKeyboard(), { supportAvoidance:true})

系統默認的自定義鍵盤避讓功能只能保證輸入框不被遮擋,輸入框下方的組件可能會被自定義鍵盤擋住,如上圖中所示,輸入框下方的tab欄被自定義鍵盤擋住。為解決這一問題,需要開發者自己實現自定義鍵盤的避讓功能。

開發者自己實現自定義鍵盤的避讓功能

開發者需要監聽自定義鍵盤根節點的onAreaChange生命周期,獲取自定義鍵盤的高度,根據實際場景設置布局的避讓。

總結

自定義鍵盤作為可定制化輸入解決方案,通過模塊化架構實現系統鍵盤的功能替代,其核心價值在于支持按鍵布局的重構與界面功能的自定義配置,同時集成場景化功能擴展模塊,顯著提升鍵盤輸入效率與操作舒適度,構建輸入數據鏈路防護體系,有效規避敏感信息泄露風險。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鍵盤
    +關注

    關注

    4

    文章

    865

    瀏覽量

    40441
  • 開發者
    +關注

    關注

    1

    文章

    628

    瀏覽量

    17375
  • HarmonyOS
    +關注

    關注

    79

    文章

    2054

    瀏覽量

    32166

原文標題:HarmonyOS應用自定義鍵盤解決方案

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    HarmonyOS開發實例:【自定義Emitter】

    使用[Emitter]實現事件的訂閱和發布,使用[自定義彈窗]設置廣告信息。
    的頭像 發表于 04-14 11:37 ?1257次閱讀
    <b class='flag-5'>HarmonyOS</b>開發實例:【<b class='flag-5'>自定義</b>Emitter】

    HarmonyOS開發案例:【 自定義彈窗】

    基于ArkTS的聲明式開發范式實現了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實現自定義彈窗
    的頭像 發表于 05-16 18:18 ?1846次閱讀
    <b class='flag-5'>HarmonyOS</b>開發案例:【 <b class='flag-5'>自定義</b>彈窗】

    講解一下HarmonyOS中的幾個自定義組件用到的知識

    HarmonyOS 的 Component 組件對外提供了一個 DrawTask 接口,通過 addDrawTask 方法為組件添加一個 DrawTask,讓開發者可以進行自定義繪制邏輯。首先我們
    發表于 03-16 16:05

    551做自定義鍵盤方案,電腦配置工具改鍵值,求程序代碼?

    551做自定義鍵盤方案,電腦配置工具改鍵值,求程序代碼。
    發表于 06-08 06:20

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據讀者的具體情況顯示自定義字符。
    發表于 01-20 15:43 ?1次下載

    工程技術筆記-彈出自定義鍵盤應用

    隨著我們使用不同美工圖片,串口屏內置的系統鍵盤將無法完美匹配用戶美工,或者內置鍵盤太小,不合適當前工程應用;自定義系統鍵盤,方便用戶自行根據自身美工圖片來調整對應的系統
    發表于 06-15 14:22 ?18次下載

    大彩串口屏彈出自定義鍵盤的應用詳細資料免費下載

    本文檔的主要內容詳細介紹的是大彩串口屏彈出自定義鍵盤的應用詳細資料免費下載。隨著用戶使用不同美工圖片,我們內置的系統鍵盤將無法完美匹配用戶美工,或者內置鍵盤太小,不合適當前工程應用;我
    發表于 05-15 08:00 ?2次下載
    大彩串口屏彈出<b class='flag-5'>自定義</b><b class='flag-5'>鍵盤</b>的應用詳細資料免費下載

    HarmonyOS 中的幾個自定義控件介紹

    HarmonyOS 開發自定義組件目前還不是很豐富,在開發過程中常常會有一些特殊效果的組件,這就需要我們額外花一些時間實現。
    的頭像 發表于 01-04 13:49 ?2582次閱讀

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
    發表于 04-08 10:48 ?14次下載

    ArkUI如何自定義彈窗(eTS)

    自定義彈窗其實也是比較簡單的,通過CustomDialogController類就可以顯示自定義彈窗。
    的頭像 發表于 08-31 08:24 ?2569次閱讀

    使用基于云自定義IP的解決方案服務設計多媒體解決方案

    對于基于云的多媒體解決方案,有基于云的自定義轉碼器 IP,支持自動視頻點播 (VOD) 管道。云服務提供的解決方案可提取源視頻,使用云媒體轉換器處理視頻以在各種設備上播放,并存儲轉碼后的媒體文件以按需交付給最終用戶。
    的頭像 發表于 10-26 11:17 ?1037次閱讀
    使用基于云<b class='flag-5'>自定義</b>IP的<b class='flag-5'>解決方案</b>服務設計多媒體<b class='flag-5'>解決方案</b>

    使用基于IP的云自定義解決方案服務設計多媒體解決方案

      對于基于云的多媒體解決方案,有基于云的自定義轉碼器 IP,支持自動視頻點播 (VOD) 管道。云服務提供的解決方案可以引入源視頻,使用云媒體轉換器處理視頻以在各種設備上播放,并存儲轉碼后的媒體文件以按需交付給最終用戶。
    的頭像 發表于 11-18 15:25 ?885次閱讀

    labview自定義控件

    labview自定義精美控件
    發表于 05-15 16:46 ?18次下載

    自定義算子開發

    一個完整的自定義算子應用過程包括注冊算子、算子實現、含自定義算子模型轉換和運行含自定義op模型四個階段。在大多數情況下,您的模型應該可以通過使用hb_mapper工具完成轉換并順利部署到地平線芯片上……
    的頭像 發表于 04-07 16:11 ?3224次閱讀
    <b class='flag-5'>自定義</b>算子開發

    labview超快自定義控件制作和普通自定義控件制作

    labview超快自定義控件制作和普通自定義控件制作
    發表于 08-21 10:32 ?13次下載