android - 禁用 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;
}
}
解决方案
推荐阅读
- python - 基于列条件将两行放入新列的相似性
- jupyter-notebook - 有一种方法可以隐藏滑块(ipywidgets)的值吗?
- amazon-web-services - IAM 政策不适用于 AWS MediaPackage
- azure-cosmosdb - Cosmos DB DateTimePart 不解析某些日期
- java - 为什么hazelcast不使用imap和hazelcastjsonvalue查询不正确的结果包括汉字?
- r - 错误:`n()` 只能在 dplyr 动词中使用
- arrays - Memcpy 将 C 数组的内容作为指针返回
- android - OpenCV:无需相机校准即可获取变换矩阵
- php - 使用 composer 设置时 Laravel 错误
- r - rpy2 不会转换回熊猫