微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

强制Android TalkBack停留在一个视图层次结构内

如何解决强制Android TalkBack停留在一个视图层次结构内

需要辅助功能帮助!
我有一个抽屉开口,但我希望TalkBack屏幕阅读器可以留在这个抽屉中,直到用户决定关闭它为止。
我要求android屏幕阅读器使用以下命令移动到打开的抽屉中:

mDrawerView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); 

效果很好,抽屉处于聚焦状态,用户可以将屏幕阅读器移到抽屉内。
问题是,抽屉不是全屏的,并且用户没有停在抽屉的末端,他一直在屏幕阅读器的帮助下继续前进到抽屉下方的控件。
我该如何迫使阅读器保持在抽屉限制范围内?

这很容易在iOS上使用:

drawerView.accessibilityViewIsModal = true
UIAccessibility.post(notification: .screenChanged,argument: drawerView)

通过在iOS上调用它,屏幕阅读器会在我提供的视图层次结构中循环控制。
我可以用Android做类似的事情吗?

解决方法

到2020年8月30日,这在Android上是不可能的!
API 22的补充:

android:accessibilityTraversalAfter

android:accessibilityTraversalBefore

在这种情况下无济于事。

在某些情况下,您可以通过设置以下内容来阻止视图层次结构:

setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);  

在我的情况下,抽屉位于片段上方,因此我可以设置为禁止访问下面的整个片段,从而迫使屏幕阅读器停留在抽屉内并循环其控件。

关闭抽屉后,我叫:

setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);  

从片段的角度看,屏幕阅读器可以继续遍历片段。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。