1# @ohos.inputMethodList (输入法切换列表控件)
2
3本模块主要面向系统应用和输入法应用,提供输入法切换列表控件,控件中显示默认输入法子类型和三方输入法应用列表,对于默认输入法应用,提供模式切换入口。
4
5> **说明:**
6>
7> 该组件从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## 导入模块
10
11```ts
12import { inputMethod } from '@kit.IMEKit';
13```
14
15## 子组件
16
1718
19## 属性
20不支持[通用属性](../apis-arkui/arkui-ts/ts-universal-attributes-size.md)
21
22## InputMethodListDialog
23
24InputMethodListDialog({controller: CustomDialogController, patternOptions?: PatternOptions})
25
26输入法切换列表弹窗。
27
28**装饰器类型:**@CustomDialog
29
30**系统能力:** SystemCapability.MiscServices.InputMethodFramework
31
32**参数:**
33
34| 名称 | 参数类型 | 必填 | 装饰器类型 | 说明 |
35| -------- | -------- | -------- | -------- | -------- |
36| controller | [CustomDialogController](../apis-arkui/arkui-ts/ts-methods-custom-dialog-box.md#customdialogcontroller) | 是 | - | 输入法切换列表弹窗控制器。 |
37| patternOptions | [PatternOptions](#patternoptions) | 否 | - | 输入法模式选项(仅默认输入法支持)。 |
38
39## PatternOptions
40
41**系统能力:** SystemCapability.MiscServices.InputMethodFramework
42
43| 名称 | 类型 | 只读 | 可选 | 说明 |
44| -------- | -------- | -------- | -------- | -------- |
45| defaultSelected<sup>11+</sup>  | number | 否 | 是 | 非必填。默认选择的模式。 |
46| patterns<sup>11+</sup>    | Array<[Pattern](#pattern)> | 否 | 否 | 必填。模式选项的资源。 |
47| action<sup>9+</sup> | function | 否 | 否 | 必填。模式选项改变时的回调。 |
48
49## Pattern
50
51**系统能力:** SystemCapability.MiscServices.InputMethodFramework
52
53| 名称 | 类型 | 只读 | 可选 | 说明 |
54| -------- | -------- | -------- | -------- | -------- |
55| icon<sup>11+</sup>  | [Resource](../apis-arkui/arkui-ts/ts-types.md#resource) | 否 | 否 | 必填。默认图片资源。 |
56| selectedIcon<sup>11+</sup>    | [Resource](../apis-arkui/arkui-ts/ts-types.md#resource) | 否 | 否 | 必填。选中时的图片资源。 |
57
58##  事件
59
60不支持[通用事件](../apis-arkui/arkui-ts/ts-universal-events-click.md)
61
62##  示例
63
64```ts
65import { InputMethodListDialog, Pattern, PatternOptions } from '@kit.IMEKit';
66
67@Entry
68// 设置组件
69@Component
70export struct settingsItem {
71  @State defaultPattern: number = 1;
72  private oneHandAction: PatternOptions = {
73    defaultSelected: this.defaultPattern,
74    patterns: [
75      {
76        icon: $r('app.media.hand_icon'),
77        selectedIcon: $r('app.media.hand_icon_selected')
78      },
79      {
80        icon: $r('app.media.hand_icon1'),
81        selectedIcon: $r('app.media.hand_icon_selected1')
82      },
83      {
84        icon: $r('app.media.hand_icon2'),
85        selectedIcon: $r('app.media.hand_icon_selected2'),
86      }],
87    action:(index: number)=>{
88      console.info(`pattern is changed, current is ${index}`);
89      this.defaultPattern = index;
90    }
91  };
92  private listController: CustomDialogController = new CustomDialogController({
93    builder: InputMethodListDialog({ patternOptions: this.oneHandAction }),
94    customStyle: true,
95    maskColor: '#00000000'
96  });
97
98  build() {
99    Column() {
100      Flex({ direction: FlexDirection.Column,
101        alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
102        Text("输入法切换列表").fontSize(20)
103      }
104    }
105    .width("13%")
106    .id('bindInputMethod')
107    .onClick((event?: ClickEvent) => {
108      this.listController.open();
109    })
110  }
111}
112```