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

如何禁用EditText的粘贴选项?双击/长按EditText时隐藏粘贴按钮

解决EditText仅隐藏「粘贴」选项的问题

你之前的代码里onPrepareActionMode返回false,这会直接阻止整个操作菜单的显示,所以所有选项都被隐藏了。要只移除「粘贴」选项、保留其他操作,需要修改这个方法的逻辑:

edtSetName.customSelectionActionModeCallback = object : ActionMode.Callback {
    override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        // 允许创建操作菜单
        return true
    }

    override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        // 精准找到「粘贴」菜单项并隐藏
        menu?.findItem(android.R.id.paste)?.isVisible = false
        // 部分系统有「粘贴为纯文本」选项,需要隐藏的话可以加下面这行
        // menu?.findItem(android.R.id.pasteAsPlainText)?.isVisible = false
        
        // 返回true让处理后的菜单正常显示
        return true
    }

    override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
        // 保留复制、剪切等其他操作的默认行为
        return when (item?.itemId) {
            android.R.id.copy, android.R.id.cut -> {
                mode?.finish()
                true
            }
            else -> false
        }
    }

    override fun onDestroyActionMode(mode: ActionMode?) {}
}

关键说明

  1. onCreateActionMode返回true:确保系统能正常创建操作菜单框架。
  2. onPrepareActionMode处理菜单显示:通过系统内置的android.R.id.paste定位粘贴选项,设置为不可见;如果遇到部分系统自定义的菜单文字,也可以遍历菜单项匹配标题来隐藏:
for (i in 0 until menu?.size()!!) {
    val item = menu.getItem(i)
    if (item.title == "粘贴") {
        item.isVisible = false
    }
}
  1. onActionItemClicked保留其他操作:根据需求处理复制、剪切等选项的逻辑,示例中保留了系统默认行为。

内容的提问来源于stack exchange,提问作者Duy Lê Thế

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:50:40