• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Class (TextMenuController)
2
3提供控制文本菜单的能力。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8>
9> - 本Class首批接口从API version 16开始支持。
10>
11> - 以下非静态API需先使用UIContext中的[getTextMenuController()](arkts-apis-uicontext-uicontext.md#gettextmenucontroller16)方法获取TextMenuController实例,再通过此实例调用对应方法。
12
13## setMenuOptions<sup>16+</sup>
14
15setMenuOptions(options: TextMenuOptions): void
16
17设置菜单选项。
18
19**原子化服务API:** 从API version 16开始,该接口支持在原子化服务中使用。
20
21**系统能力:** SystemCapability.ArkUI.ArkUI.Full
22
23**参数:**
24
25| 参数名      | 类型         | 必填   | 说明   |
26| -------- | ---------- | ---- | ---- |
27| options | [TextMenuOptions](../apis-arkui/arkui-ts/ts-text-common.md#textmenuoptions16对象说明)| 是    | 设置菜单选项。<br />默认值:{showMode: TextMenuShowMode.DEFAULT} |
28
29**示例:**
30
31```ts
32// xxx.ets
33@Entry
34@Component
35struct Index {
36  aboutToAppear(): void {
37    // 设置在对应的UIContext下优先使用独立窗口显示文本选择菜单
38    this.getUIContext()
39      .getTextMenuController()
40      .setMenuOptions(
41        {
42          showMode: TextMenuShowMode.PREFER_WINDOW
43        }
44      );
45  }
46
47  build() {
48    Row() {
49      Column() {
50        TextInput({ text: "这是一个TextInput,长按弹出文本选择菜单" })
51          .height(60)
52          .fontStyle(FontStyle.Italic)
53          .fontWeight(FontWeight.Bold)
54          .textAlign(TextAlign.Center)
55          .caretStyle({ width: '4vp' })
56
57        Text("这是一个Text,长按弹出文本选择菜单")
58          .height(60)
59          .copyOption(CopyOptions.InApp)
60          .fontStyle(FontStyle.Italic)
61          .fontWeight(FontWeight.Bold)
62          .textAlign(TextAlign.Center)
63      }.width('100%')
64    }
65    .height('100%')
66  }
67}
68```
69## disableSystemServiceMenuItems<sup>20+</sup>
70
71static disableSystemServiceMenuItems(disable: boolean): void
72
73屏蔽文本选择菜单内所有系统服务菜单项。
74
75> **说明:**
76>
77> 此接口调用后整个应用进程都会生效。
78>
79> 此接口可在[UIAbility](../apis-ability-kit/js-apis-app-ability-uiAbility.md)使用。
80>
81> 此接口调用后将影响文本组件的接口[editMenuOptions](./arkui-ts/ts-basic-components-text.md#editmenuoptions12),其回调方法[onCreateMenu](./arkui-ts/ts-text-common.md#oncreatemenu12)的入参列表中不包含被屏蔽的菜单选项。
82>
83> 涉及文本选择菜单的组件有 [Text](./arkui-ts/ts-basic-components-text.md)、[TextArea](./arkui-ts/ts-basic-components-textarea.md)、[TextInput](./arkui-ts/ts-basic-components-textinput.md)、[Search](./arkui-ts/ts-basic-components-search.md)、[RichEditor](./arkui-ts/ts-basic-components-richeditor.md)、[Web](../apis-arkweb/arkts-basic-components-web.md)。
84>
85> 系统服务菜单项指除[TextMenuItemId](./arkui-ts/ts-text-common.md#textmenuitemid12)中的复制、剪切、全选、粘贴以外的菜单项。
86>
87> 当disableSystemServiceMenuItems与disableMenuItems同时设置时,优先生效先设置的disableSystemServiceMenuItems。
88>
89> 使用该接口时,全局生效,多次调用以最后一次为准。
90>
91> 可以通过以下三种方式恢复禁用菜单:
92>
93> - 仅设置disableSystemServiceMenuItems(true)禁用菜单时,设置false即可恢复禁用;
94> - 仅设置disableMenuItems禁用菜单时,设置为空数组即可恢复禁用;
95> - 当disableSystemServiceMenuItems与disableMenuItems同时使用时,则前者设置为false,后者设置为空数组,即可恢复禁用。
96
97**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
98
99**系统能力:** SystemCapability.ArkUI.ArkUI.Full
100
101**参数:**
102
103| 参数名      | 类型         | 必填   | 说明   |
104| -------- | ---------- | ---- | ---- |
105| disable | boolean | 是    | 是否禁用系统服务菜单。true表示禁用,false表示不禁用。<br />默认值: false |
106
107**示例:**
108
109```ts
110import { TextMenuController } from '@kit.ArkUI';
111
112// xxx.ets
113@Entry
114@Component
115struct Index {
116  aboutToAppear(): void {
117    // 禁用所有系统服务菜单。
118    TextMenuController.disableSystemServiceMenuItems(true)
119  }
120
121  aboutToDisappear(): void {
122    // 页面消失恢复系统服务菜单。
123    TextMenuController.disableSystemServiceMenuItems(false)
124  }
125
126  build() {
127    Row() {
128      Column() {
129        TextInput({ text: "这是一个TextInput,长按弹出文本选择菜单" })
130          .height(60)
131          .fontStyle(FontStyle.Italic)
132          .fontWeight(FontWeight.Bold)
133          .textAlign(TextAlign.Center)
134          .caretStyle({ width: '4vp' })
135          .editMenuOptions({
136            onCreateMenu: (menuItems: Array<TextMenuItem>) => {
137                // menuItems不包含被屏蔽的系统菜单项。
138                return menuItems
139            },
140            onMenuItemClick: (menuItem: TextMenuItem, textRange: TextRange) => {
141                return false
142            }
143          })
144      }.width('100%')
145    }
146    .height('100%')
147  }
148}
149```
150## disableMenuItems<sup>20+</sup>
151
152static disableMenuItems(items: Array\<TextMenuItemId>): void
153
154屏蔽文本选择菜单内指定的系统服务菜单项。
155
156> **说明:**
157>
158> 此接口调用后整个应用进程都会生效。
159>
160> 此接口可在[UIAbility](../apis-ability-kit/js-apis-app-ability-uiAbility.md)使用。
161>
162> 此接口调用后将影响文本组件的接口[editMenuOptions](./arkui-ts/ts-basic-components-text.md#editmenuoptions12),其回调方法[onCreateMenu](./arkui-ts/ts-text-common.md#oncreatemenu12)的入参列表中不包含被屏蔽的菜单选项。
163>
164> 涉及文本选择菜单的组件有 [Text](./arkui-ts/ts-basic-components-text.md)、[TextArea](./arkui-ts/ts-basic-components-textarea.md)、[TextInput](./arkui-ts/ts-basic-components-textinput.md)、[Search](./arkui-ts/ts-basic-components-search.md)、[RichEditor](./arkui-ts/ts-basic-components-richeditor.md)、[Web](../apis-arkweb/arkts-basic-components-web.md)。
165>
166> 系统服务菜单项指除[TextMenuItemId](./arkui-ts/ts-text-common.md#textmenuitemid12)中的复制、剪切、全选、粘贴以外的菜单项。
167>
168> 当disableSystemServiceMenuItems与disableMenuItems同时设置时,优先生效先设置的disableSystemServiceMenuItems。
169>
170> 使用该接口时,全局生效,多次调用以最后一次为准。
171>
172> 可以通过以下三种方式恢复禁用菜单:
173>
174> - 仅设置disableSystemServiceMenuItems(true)禁用菜单时,设置false即可恢复禁用;
175> - 仅设置disableMenuItems禁用菜单时,设置为空数组即可恢复禁用;
176> - 当disableSystemServiceMenuItems与disableMenuItems同时使用时,则前者设置为false,后者设置为空数组,即可恢复禁用。
177
178**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
179
180**系统能力:** SystemCapability.ArkUI.ArkUI.Full
181
182**参数:**
183
184| 参数名      | 类型         | 必填   | 说明   |
185| -------- | ---------- | ---- | ---- |
186| items | Array<[TextMenuItemId](./arkui-ts/ts-text-common.md#textmenuitemid12)> | 是    | 禁用菜单项的列表。<br />默认值: []<br />默认不禁用任何菜单。 |
187
188**示例:**
189
190```ts
191import { TextMenuController } from '@kit.ArkUI';
192
193// xxx.ets
194@Entry
195@Component
196struct Index {
197  aboutToAppear(): void {
198    // 禁用搜索和翻译菜单。
199    TextMenuController.disableMenuItems([TextMenuItemId.SEARCH, TextMenuItemId.TRANSLATE])
200  }
201
202  aboutToDisappear(): void {
203    // 恢复系统服务菜单。
204    TextMenuController.disableMenuItems([])
205  }
206
207  build() {
208    Row() {
209      Column() {
210        TextInput({ text: "这是一个TextInput,长按弹出文本选择菜单" })
211          .height(60)
212          .fontStyle(FontStyle.Italic)
213          .fontWeight(FontWeight.Bold)
214          .textAlign(TextAlign.Center)
215          .caretStyle({ width: '4vp' })
216          .editMenuOptions({
217            onCreateMenu: (menuItems: Array<TextMenuItem>) => {
218                // menuItems不包含搜索和翻译。
219                return menuItems;
220            },
221            onMenuItemClick: (menuItem: TextMenuItem, textRange: TextRange) => {
222                return false
223            }
224          })
225      }.width('100%')
226    }
227    .height('100%')
228  }
229}
230```
231
232