You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android选中文本的上下文菜单中添加Jetpack Compose自定义项?

在Jetpack Compose中为文本选择添加自定义上下文菜单选项

完全可行,Jetpack Compose 1.2.0及以上版本提供了直接的API来定制文本选择时弹出的上下文菜单,不管是可编辑的输入框还是普通可选中的静态文本,都能添加自定义选项。

实现步骤:

  • 1. 创建自定义文本上下文菜单
    通过TextContextMenu类定义你的自定义选项,每个选项用TextContextMenuItem封装,指定显示标签和点击事件:

    val customTextMenu = TextContextMenu(
        items = listOf(
            TextContextMenuItem(
                label = "我的自定义选项",
                onClick = { menuInfo ->
                    // 获取选中的文本范围
                    val range = menuInfo.selectionRange
                    val selectedText = yourTextContent.substring(range.start, range.end)
                    // 执行你的自定义逻辑,比如保存、分享或其他操作
                    println("选中的文本:$selectedText")
                }
            ),
            // 可以添加多个自定义选项
            TextContextMenuItem(
                label = "另一个自定义操作",
                onClick = { /* 处理逻辑 */ }
            )
        )
    )
    
  • 2. 为可编辑文本(TextField)应用菜单
    在TextField组件中直接指定textContextMenu参数:

    var inputText by remember { mutableStateOf("") }
    
    TextField(
        value = inputText,
        onValueChange = { inputText = it },
        textContextMenu = customTextMenu
    )
    
  • 3. 为静态可选中文本应用菜单
    对于不可编辑的静态文本,用SelectionContainer包裹BasicText,并指定textContextMenu:

    SelectionContainer {
        BasicText(
            text = "这是一段可以选中的静态文本,选我试试",
            textContextMenu = customTextMenu
        )
    }
    

注意事项:

  • 确保你的Compose依赖版本不低于1.2.0,textContextMenu API是在这个版本引入的。
  • 自定义菜单会替换默认的系统上下文菜单,如果需要保留系统选项(如复制、粘贴),可以在TextContextMenu的items中同时添加系统默认项,或者通过TextContextMenu.Default来扩展。

内容的提问来源于stack exchange,提问作者agmcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:01:38