android - 如何在辅助功能服务中的可 ScrollView 上方添加矩形?

标签 android kotlin accessibilityservice accessibility

我创建了自己的 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 小时后死掉

enter image description here enter image description here

最佳答案

我认为没有一种通用的方法可以做到这一点。您只需要监听 UI 的更新并重新绘制框。会有一些延迟。

TalkBack 通过使用 AccessibilityFocus 处理此问题,这需要打开 ExploreByTouch。可访问性焦点的焦点高亮是在应用进程中绘制的,因此它更一致地遵循 View 。

关于android - 如何在辅助功能服务中的可 ScrollView 上方添加矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58791587/

相关文章:

android - 检测键盘在 android 上的应用程序之外处于 Activity 状态

应用从最近应用列表中刷出后,Android 服务崩溃

android - 使用 Activity 在 android 中实现回调

android - 在 WebView 中查看 pdf 文件

android - JobService 不会在 android 9 中重新安排

android - 从 Kotlin 隐藏静态 Java 方法

reactjs - RBuilder和RDomBuilder有什么区别?

java - android辅助功能服务突然停止触发事件

java - AccessibilityEvent.getPackageName() 返回 null

android - ConstraintLayout 不遵守最大高度