首页 > 解决方案 > 禁用 AI 文本选择及其上下文菜单项?

问题描述

有两个纯 TextView 启用了文本选择。我想禁用默认选择菜单项。我设置customSelectionActionModeCallback了一个自定义类,并尝试了 call menu?.clear()in onCreateActionMode,但这并没有删除作为选择菜单上的第一个条目出现的 AI 菜单(我不知道谷歌官方称之为什么),例如“地图”何时文本是地址,或者当文本是外语时“翻译”。

isVisible我可以通过将它们设置为 false in来隐藏这些项目onPrepareActionMode,但 AI 选择行为仍然存在。请参阅下面的屏幕录像。如果我长按一个常规单词,则只有该单词被选中。但是如果我长按地址中的一个词,整个地址就会被选中。我可以完全禁用此 AI 行为,并使选择将所有文本视为普通文本吗?

在此处输入图像描述

class MainActivity : AppCompatActivity()
{
override fun onCreate(savedInstanceState: Bundle?)
{
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    var popupMenu = object: ActionMode.Callback{
        override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
            menu?.clear()
            val inflater = mode?.menuInflater;
            inflater?.inflate(R.menu.popup, menu);
            return true;
        }

        override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
            for (i in 0 until menu!!.size())
            {
                val item = menu!!.getItem(i)
                when(item.itemId)
                {
                    R.id.menu1->{}
                    else->{
                        item.isVisible=false;
                    }
                }
            }
            return false
        }

        override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
            return false;
        }

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

    findViewById<TextView>(R.id.textview1).customSelectionActionModeCallback = popupMenu;
    findViewById<TextView>(R.id.textview2).customSelectionActionModeCallback = popupMenu;
}
}

标签: androidtextview

解决方案


推荐阅读