Class (TextMenuController)

提供控制文本菜单的能力。

说明:

  • 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

  • 本Class首批接口从API version 16开始支持。

  • 以下非静态API需先使用UIContext中的getTextMenuController()方法获取TextMenuController实例,再通过此实例调用对应方法。

setMenuOptions16+

setMenuOptions(options: TextMenuOptions): void

设置菜单选项。

原子化服务API: 从API version 16开始,该接口支持在原子化服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
options TextMenuOptions 设置菜单选项。
默认值:{showMode: TextMenuShowMode.DEFAULT}

示例:

// xxx.ets
@Entry
@Component
struct Index {
  aboutToAppear(): void {
    // 设置在对应的UIContext下优先使用独立窗口显示文本选择菜单
    this.getUIContext()
      .getTextMenuController()
      .setMenuOptions(
        {
          showMode: TextMenuShowMode.PREFER_WINDOW
        }
      );
  }

  build() {
    Row() {
      Column() {
        TextInput({ text: "这是一个TextInput,长按弹出文本选择菜单" })
          .height(60)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Center)
          .caretStyle({ width: '4vp' })

        Text("这是一个Text,长按弹出文本选择菜单")
          .height(60)
          .copyOption(CopyOptions.InApp)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Center)
      }.width('100%')
    }
    .height('100%')
  }
}

disableSystemServiceMenuItems20+

static disableSystemServiceMenuItems(disable: boolean): void

屏蔽文本选择菜单内所有系统服务菜单项。

说明:

  • 此接口调用后整个应用进程都会生效。

  • 此接口可在UIAbility使用。

  • 此接口调用后将影响文本组件的接口editMenuOptions,其回调方法onCreateMenu的入参列表中不包含被屏蔽的菜单选项。

  • 涉及文本选择菜单的组件有 TextTextAreaTextInputSearchRichEditorWeb

  • 系统服务菜单项指除TextMenuItemId中的复制、剪切、全选、粘贴以外的菜单项。

  • 当disableSystemServiceMenuItems与disableMenuItems同时设置时,优先生效先设置的disableSystemServiceMenuItems。

  • 使用该接口时,全局生效,多次调用以最后一次为准。

  • 可以通过以下三种方式恢复禁用菜单:

    • 仅设置disableSystemServiceMenuItems(true)禁用菜单时,设置false即可恢复禁用;
    • 仅设置disableMenuItems禁用菜单时,设置为空数组即可恢复禁用;
    • 当disableSystemServiceMenuItems与disableMenuItems同时使用时,则前者设置为false,后者设置为空数组,即可恢复禁用。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
disable boolean 是否禁用系统服务菜单。true表示禁用,false表示不禁用。
默认值: false

示例:

import { TextMenuController } from '@kit.ArkUI';

// xxx.ets
@Entry
@Component
struct Index {
  aboutToAppear(): void {
    // 禁用所有系统服务菜单。
    TextMenuController.disableSystemServiceMenuItems(true)
  }

  aboutToDisappear(): void {
    // 页面消失恢复系统服务菜单。
    TextMenuController.disableSystemServiceMenuItems(false)
  }

  build() {
    Row() {
      Column() {
        TextInput({ text: "这是一个TextInput,长按弹出文本选择菜单" })
          .height(60)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Center)
          .caretStyle({ width: '4vp' })
          .editMenuOptions({
            onCreateMenu: (menuItems: Array<TextMenuItem>) => {
                // menuItems不包含被屏蔽的系统菜单项。
                return menuItems
            },
            onMenuItemClick: (menuItem: TextMenuItem, textRange: TextRange) => {
                return false
            }
          })
      }.width('100%')
    }
    .height('100%')
  }
}

disableMenuItems20+

static disableMenuItems(items: Array<TextMenuItemId>): void

屏蔽文本选择菜单内指定的系统服务菜单项。

说明:

  • 此接口调用后整个应用进程都会生效。

  • 此接口可在UIAbility使用。

  • 此接口调用后将影响文本组件的接口editMenuOptions,其回调方法onCreateMenu的入参列表中不包含被屏蔽的菜单选项。

  • 涉及文本选择菜单的组件有 TextTextAreaTextInputSearchRichEditorWeb

  • 系统服务菜单项指除TextMenuItemId中的复制、剪切、全选、粘贴以外的菜单项。

  • 当disableSystemServiceMenuItems与disableMenuItems同时设置时,优先生效先设置的disableSystemServiceMenuItems。

  • 使用该接口时,全局生效,多次调用以最后一次为准。

  • 禁用一级菜单项,会同时禁用其所有的二级菜单项。例如禁用一级菜单项TextMenuItemId中的autoFill(父菜单项),会同时禁用二级菜单项TextMenuItemId中的密码保险箱passwordVault(子菜单项)。

  • 不支持禁用二级菜单项。如果需要,可通过禁用对应的一级菜单项实现。

  • 可以通过以下三种方式恢复禁用菜单:

    • 仅设置disableSystemServiceMenuItems(true)禁用菜单时,设置false即可恢复禁用;
    • 仅设置disableMenuItems禁用菜单时,设置为空数组即可恢复禁用;
    • 当disableSystemServiceMenuItems与disableMenuItems同时使用时,则前者设置为false,后者设置为空数组,即可恢复禁用。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
items Array<TextMenuItemId> 禁用菜单项的列表。
默认值: []
默认不禁用任何菜单。

示例:

import { TextMenuController } from '@kit.ArkUI';

// xxx.ets
@Entry
@Component
struct Index {
  aboutToAppear(): void {
    // 禁用搜索和翻译菜单。
    TextMenuController.disableMenuItems([TextMenuItemId.SEARCH, TextMenuItemId.TRANSLATE])
  }

  aboutToDisappear(): void {
    // 恢复系统服务菜单。
    TextMenuController.disableMenuItems([])
  }

  build() {
    Row() {
      Column() {
        TextInput({ text: "这是一个TextInput,长按弹出文本选择菜单" })
          .height(60)
          .fontStyle(FontStyle.Italic)
          .fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Center)
          .caretStyle({ width: '4vp' })
          .editMenuOptions({
            onCreateMenu: (menuItems: Array<TextMenuItem>) => {
                // menuItems不包含搜索和翻译。
                return menuItems;
            },
            onMenuItemClick: (menuItem: TextMenuItem, textRange: TextRange) => {
                return false
            }
          })
      }.width('100%')
    }
    .height('100%')
  }
}