Как добавить прямоугольник над прокручиваемым представлением в службе доступности? - PullRequest
1 голос
/ 10 ноября 2019

Я создаю свой собственный TalkBack и хочу увидеть ту же функциональность

История:

Если представление статическое, тогда я могу получить все элементы простополучая всех детей, как это

val child: AccessibilityNodeInfo = rootInActiveWindow

deepChild(child)

...

fun deepChild(child: AccessibilityNodeInfo){
    for (i in 0 until child.childCount) {
        deepChild(child.getChild(i))
    }
    ...
}

После того, как я получу coodinates и нарисую его в WindowManager, добавив через windowsManager.addView(view, params)

Проблема:

Если представление не является статичным (например, имеет вид переработчика), то прямоугольник сохранит ту же позицию, но представление будет перемещено

Что я хочу?

Как добавить этот прямоугольник над видом и сохранить положение при прокрутке?

PS Я знаю, что TalkBack имеет открытый исходный код, но код сумасшедший, и я не хочуумереть через 10 часов после старта

enter image description here enter image description here

1 Ответ

0 голосов
/ 11 ноября 2019

Я не думаю, что есть универсальный способ сделать это. Вам просто нужно слушать обновления пользовательского интерфейса и перерисовывать окно. Будет некоторое отставание.

TalkBack обрабатывает это с помощью AccessibilityFocus, который требует включения ExploreByTouch. В процессе работы приложения акцент делается на акценте на доступности, поэтому он гораздо более последовательно следует представлениям.

...