[prg] Как реализовать перемещение по структурным частям view в talkback при свайпах в android
Всех приветствую. Обычно,когда мы свайпаем влево или вправо,talkback
переходит на предыдущее или следующее view. Подскажите пожалуйста,можно
ли реализовать и если да,то как,чтобы при попытке перейти на следующее
или предыдущее view,я попадал бы на следующую или предыдущую часть
структурной единицы view. К примеру у меня в textView записана формула
a+b/c. Как мне реализовать поведение,чтобы когда фокус стоит на этом
view и я свайпаю вправо,talkback читал мне знаменатель,т.е c и чтобы
если я буду свайпать влево,talkback прочитал мне числитель a+b.
Естественно,где числитель и знаменатель и другие части в формуле,я буду
определять сам,просто мне нужна помощь в реализации этой идеи на уровне
android api,т.е как это реализовать,какое view мне лучше для этого
использовать - TextView или WebView и т.д. В общем я хочу реализовать
это так,как это делает mathjax и mathplayer с nvda,только с помощью того
же mathjax я могу перемещаться по структурным элементам формулы вроде
только стрелками,а я хочу реализовать эту возможность на сенсоре. Я
хотел посмотреть в сторону AccessibilityEvent,но когда я сделал тестовый
пример с onPopulateAccessibilityEvent,никакого события не
приходило,когда моё view теряло фокус. Конечно,можно использовать
onFocusChangeListener но тогда,наверное,если у пользователя включены
звуки talkback,он услышит звук перемещения фокуса на следующее view,а
потом он услышит этот же звук,поскольку фокус вернётся к текущему view.
В общем мне нужно как-то вклинится в процесс перед тем,как talkback
поймёт,что текущее view должно потерять фокус,при этом это должно
работать только при свайпах,а не в том случае,когда я нахожу другое view
ощупыванием экрана. Заранее всем огромное спасибо за помощь.
Приветствую всех!
Возможный вариант: реализовать для всех интересующих вас вложенных
элементов, как минимум, AccessibilityNodeInfo, если нужно, чтобы они стали
видимы для фокуса доступности. Можно проще -- оформить их в виде вложенных
View, тогда автоматически для них будет реализован системный вариант
AccessibilityNodeInfo. В любом случае, скорее всего, такие элементы будут
реагировать на ощупывание и вам придется написать свой обработчик
соответствующего события, чтобы скрыть его от TalkBack.
Возможные реализации (но, скорее всего, этим список вариантов не
ограничивается):
1. Написать свой полноценный MathView (если его еще никто не написал),
который будет содержать вложенные TextView с соответствующими частями
математических выражений. Тогда компоненты формулы будут доступны для
навигации TalkBack.
2. Посмотреть в сторону SpannableString. Есть пример, но он касается кликов
по отдельным словам в TextView
https://stackoverflow.com/questions/30349749/multiple-onclicklistener-on-each-word-of-string-in-text-view-android
Исходное сообщение Подскажите пожалуйста,можно