编辑文字的“上下文”菜单的Android可访问性

时间:2018-12-11 04:48:03

标签: android android-edittext talkback android-accessibility

我是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”(请参见下面的屏幕截图)

enter image description here

我可以使用下面的代码删除“ 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)上进行了测试

0 个答案:

没有答案