我创建了自己的 TalkBack 并希望看到相同的功能
故事:
如果 View 是静态的,那么我可以通过像这样获取所有子项来获取所有元素
val child: AccessibilityNodeInfo = rootInActiveWindow
deepChild(child)
...
fun deepChild(child: AccessibilityNodeInfo){
for (i in 0 until child.childCount) {
deepChild(child.getChild(i))
}
...
}
在我获取坐标并通过添加 windowsManager.addView(view, params)
在 WindowManager 中绘制它之后
问题:
如果 View 不是静态的(比如有recycler View ),那么矩形保持不变,但是 View 会移动
我想要什么?
如何在 View 上方添加这个矩形并在滚动时保持位置?
PS 我知道 TalkBack 有开源代码,但是代码很疯狂,我不想在开始 10 小时后死掉
最佳答案
我认为没有一种通用的方法可以做到这一点。您只需要监听 UI 的更新并重新绘制框。会有一些延迟。
TalkBack 通过使用 AccessibilityFocus 处理此问题,这需要打开 ExploreByTouch。可访问性焦点的焦点高亮是在应用进程中绘制的,因此它更一致地遵循 View 。
关于android - 如何在辅助功能服务中的可 ScrollView 上方添加矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58791587/