Я новичок в специальных возможностях Android и не могу понять, что происходит в приведенном ниже случае.
У меня есть пользовательский текст редактирования в пользовательском AlertDialog, у меня есть требование выбрать весь текств тексте редактирования, когда отображается диалоговое окно.Чтобы добиться этого, я использую
editText.setSelectAllOnFocus(true)
. Из-за этого My Accessibility Talkback говорит action: share всякий раз, когда редактируется текст.Сначала я думал, что это из-за локального контекстного меню правки текста, а затем я отключил локальное контекстное меню, используя следующий код:
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?) {}
}
Даже тогда я не мог избавиться от действия "Говорить на речах": поделиться».Кроме того, я перезаписываю функцию «onInitializeAccessibilityNodeInfo» в edittext для отладки того, какие действия выделены для Talkback, и я вижу, что какое-то неизвестное действие имеет метку «Share» (см. Скриншот ниже)
![enter image description here](https://i.stack.imgur.com/Eum0G.png)
Я могу удалить « 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).