1# 输入法子类型开发指南 2 3输入法子类型允许输入法展现不同的输入模式或语言,用户可以根据需要在不同模式和语言中切换。如:输入法的中文键盘、英文键盘等都属于输入法的子类型。 4 5## 输入法子类型的配置与实现 6 71. 输入法应用开发者只需要注册实现一个InputMethodExtensionAbility,所有的输入法子类型共用该InputMethodExtensionAbility,在[module.json5配置文件](../quick-start/module-configuration-file.md)中添加metadata,name为ohos_extension.input_method,用于配置所有子类型的资源信息。 8 ```ts 9 { 10 "module": { 11 // ... 12 "extensionAbilities": [ 13 { 14 "description": "InputMethodExtDemo", 15 "icon": "$media:icon", 16 "name": "InputMethodExtAbility", 17 "srcEntry": "./ets/InputMethodExtensionAbility/InputMethodService.ts", 18 "type": "inputMethod", 19 "exported": true, 20 "metadata": [ 21 { 22 "name": "ohos.extension.input_method", 23 "resource": "$profile:input_method_config" 24 } 25 ] 26 } 27 ] 28 } 29 } 30 ``` 31 322. 子类型配置文件格式如下,字段释义参照[InputMethodSubtype](../reference/apis-ime-kit/js-apis-inputmethod-subtype.md#inputmethodsubtype),开发者需要严格按照配置文件格式及字段进行子类型信息配置, locale字段的配置参照[BCP 47](https://tools.ietf.org/html/bcp47)。 33 ``` 34 { 35 "subtypes": [ 36 { 37 "icon": "$media:icon", 38 "id": "InputMethodExtAbility", 39 "label": "$string:english", 40 "locale": "en-US", 41 "mode": "lower" 42 }, 43 { 44 "icon": "$media:icon", 45 "id": "InputMethodExtAbility1", 46 "label": "$string:chinese", 47 "locale": "zh-CN", 48 "mode": "lower" 49 } 50 ] 51 } 52 ``` 53 543. 输入法应用中监听子类型事件,根据不同的子类型,可以加载不同的软键盘界面,或者使用状态变量控制界面中的软键盘显示。 55 56 ```ts 57 import { InputMethodSubtype, inputMethodEngine } from '@kit.IMEKit'; 58 59 let panel: inputMethodEngine.Panel; 60 let inputMethodAbility: inputMethodEngine.InputMethodAbility = inputMethodEngine.getInputMethodAbility(); 61 inputMethodAbility.on('setSubtype', (inputMethodSubtype: InputMethodSubtype) => { 62 let subType = inputMethodSubtype; // 保存当前输入法子类型, 此处也可以改变状态变量的值,布局中判断状态变量,不同的子类型显示不同的布局控件 63 if (inputMethodSubtype.id == 'InputMethodExtAbility') { // 根据不同的子类型,可以加载不同的软键盘界面 64 panel.setUiContent('pages/Index'); 65 } 66 if (inputMethodSubtype.id == 'InputMethodExtAbility1') { // 根据不同的子类型,可以加载不同的软键盘界面 67 panel.setUiContent('pages/Index1'); 68 } 69 }); 70 ``` 71 72## 输入法子类型相关信息的获取 73 741. 开发者可以通过调用[getCurrentInputMethodSubtype](../reference/apis-ime-kit/js-apis-inputmethod.md#inputmethodgetcurrentinputmethodsubtype9)获取当前输入法应用的当前子类型。 75 762. 开发者可以通过调用[listCurrentInputMethodSubtype](../reference/apis-ime-kit/js-apis-inputmethod.md#listcurrentinputmethodsubtype9)获取当前输入法应用的所有子类型。 77 783. 开发者可以通过调用[listInputMethodSubtype](../reference/apis-ime-kit/js-apis-inputmethod.md#listinputmethodsubtype9)获取指定输入法应用的所有子类型。 79 80 81## 输入法子类型的切换 82 831. 开发者可以通过调用[switchCurrentInputMethodSubtype](../reference/apis-ime-kit/js-apis-inputmethod.md#inputmethodswitchcurrentinputmethodsubtype9)切换当前输入法应用的子类型。 84 852. 开发者可以通过调用[switchCurrentInputMethodAndSubtype](../reference/apis-ime-kit/js-apis-inputmethod.md#inputmethodswitchcurrentinputmethodandsubtype9)切换至指定输入法应用的指定子类型。 86