【问题标题】:Force Android TalkBack to stay inside one view hierarchy强制 Android TalkBack 停留在一个视图层次结构中
【发布时间】:2020-08-29 17:13:52
【问题描述】:

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

mDrawerView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); 

而且它工作得很好,抽屉是集中的,用户可以在抽屉内使用屏幕阅读器移动。
问题是,抽屉不是全屏的,用户并没有停在抽屉的尽头,他一直用屏幕阅读器向前移动到抽屉下方的控件。
如何强制阅读器保持在抽屉范围内?

这很容易在 iOS 上使用:

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

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

【问题讨论】:

    标签: android accessibility talkback


    【解决方案1】:

    截至 2020 年 8 月 30 日,这在 Android 上是不可能的!
    API 22 新增:

    android:accessibilityTraversalAfter

    android:accessibilityTraversalBefore

    对这种情况没有帮助。

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

    setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);  
    

    在我的例子中,抽屉位于片段上方,因此我可以设置阻止下方整个片段的可访问性,从而强制屏幕阅读器留在抽屉内并循环其控件。

    关闭抽屉后我打电话:

    setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);  
    

    在片段的视图上,屏幕阅读器可以继续遍历片段。

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 2020-03-19
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多