我是android中可访问性的新手,在以下情况下我无法真正理解正在发生的事情。
我在自定义AlertDialog中有一个自定义的edittext,当显示对话框时,我需要选择edittext中的所有文本。为此,我正在使用
editText.setSelectAllOnFocus(true)
因此,每当编辑文本成为焦点时,“我的辅助功能对讲”都会说出 action:share 。最初,我认为这是因为edittext的本地上下文菜单,然后我使用下面的代码禁用了本地上下文菜单
editText.customSelectionActionModeCallback = object : ActionMode.Callback {
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
return false
}
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
return false
}
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
return false
}
override fun onDestroyActionMode(mode: ActionMode?) {}
}
即使那样,我也无法摆脱说“ action:share”的对讲功能。此外,我在edittext上覆盖了“ onInitializeAccessibilityNodeInfo”功能,以调试分配给“对讲”的操作,并且我发现某些未知操作的标签为“ Share”(请参见下面的屏幕截图)
我可以使用下面的代码删除“ action:share ”,但不确定这是否正确,是否会有副作用
editText.setAccessibilityDelegate(object : AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(host: View?, info: AccessibilityNodeInfo?) {
super.onInitializeAccessibilityNodeInfo(host, info)
info?.actionList?.clear()// removes the action share
}
})
请告知,是否有更好的方法来处理Android中的辅助功能操作。
注意:我在Pixel 1(7.1)和Samsung Note 8(7.1.1)上进行了测试