强制 Android TalkBack 保留在一个视图层次结构中
Force Android TalkBack to stay inside one view hierarchy
需要无障碍帮助!
我有一个打开的抽屉,我希望 TalkBack 屏幕 reader 留在这个抽屉里,直到用户决定关闭它。
我要求 android 屏幕 reader 使用以下命令移动到打开的抽屉:
mDrawerView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
它工作得很好,抽屉被聚焦并且用户可以在抽屉内随着屏幕 reader 移动。
问题是,抽屉不是全屏,用户不会停在抽屉的末端,他会继续向前移动屏幕 reader 到抽屉下方的控件。
如何强制 reader 保持在抽屉限制内?
这很容易在 iOS 上使用:
drawerView.accessibilityViewIsModal = true
UIAccessibility.post(notification: .screenChanged, argument: drawerView)
通过在 iOS 上调用它,屏幕 reader 在我提供的视图层次结构中循环控件。
我可以用 Android 做类似的事情吗??
截至 2020 年 8 月 30 日,这在 Android 是不可能的!
API 22 加法:
android:accessibilityTraversalAfter
和
android:accessibilityTraversalBefore
对这种情况没有帮助。
在某些情况下,您可以通过设置来阻止视图层次结构:
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
在我的例子中,抽屉位于片段上方,因此我可以设置为阻止下方整个片段的可访问性,从而强制屏幕 reader 保留在抽屉内并循环其控件。
关闭抽屉后我打电话给:
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
在片段和屏幕的视图上reader可以继续遍历片段。
需要无障碍帮助!
我有一个打开的抽屉,我希望 TalkBack 屏幕 reader 留在这个抽屉里,直到用户决定关闭它。
我要求 android 屏幕 reader 使用以下命令移动到打开的抽屉:
mDrawerView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
它工作得很好,抽屉被聚焦并且用户可以在抽屉内随着屏幕 reader 移动。
问题是,抽屉不是全屏,用户不会停在抽屉的末端,他会继续向前移动屏幕 reader 到抽屉下方的控件。
如何强制 reader 保持在抽屉限制内?
这很容易在 iOS 上使用:
drawerView.accessibilityViewIsModal = true
UIAccessibility.post(notification: .screenChanged, argument: drawerView)
通过在 iOS 上调用它,屏幕 reader 在我提供的视图层次结构中循环控件。
我可以用 Android 做类似的事情吗??
截至 2020 年 8 月 30 日,这在 Android 是不可能的!
API 22 加法:
android:accessibilityTraversalAfter
和
android:accessibilityTraversalBefore
对这种情况没有帮助。
在某些情况下,您可以通过设置来阻止视图层次结构:
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
在我的例子中,抽屉位于片段上方,因此我可以设置为阻止下方整个片段的可访问性,从而强制屏幕 reader 保留在抽屉内并循环其控件。
关闭抽屉后我打电话给:
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
在片段和屏幕的视图上reader可以继续遍历片段。