首页 > 解决方案 > 如何让 TalkBack 按顺序读取 Android 辅助功能事件而不切断它们

问题描述

我有一个过滤器视图,在关闭时,我想做 2 个可访问性的事情:

我尝试了以下方法:

filtersButton.announceForAccessibility("$listSize items in list")
filtersButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)

我希望 TalkBack 按顺序阅读:

但是,它通常会跳过第一次读出,只阅读filtersButton. 有时它会在跳到第二个之前只读取第一个的一部分。

如何强制 TalkBack 读出两个辅助功能事件?

标签: androidandroid-accessibilityandroid-a11y

解决方案


使文本和可听信息相似是一种很好的做法,也是一种推荐的方法。尽量避免公告,而是让屏幕阅读器阅读显示的信息。该方法announceForAccessibility()旨在通知视觉变化,否则会被忽视。

您的屏幕上是否有显示项目总数的视图?如果您对项目数量没有直观的线索,则不应在 TalkBack 上公布。要么信息很重要,您应该将其直观地呈现给所有用户,要么信息不那么重要,不能在屏幕上显示,不应该在屏幕阅读器上公布。

如果它在屏幕上可见,您可以使用AccessibilityLiveRegion让阅读器宣布更改的值,并将焦点保持在Add filters按钮上。另一种方法是简单地将第一个焦点设置到显示项目列表计数的视图,然后让用户导航到下一个按钮。

ViewCompat.setAccessibilityLiveRegion(itemCountTextView, ACCESSIBILITY_LIVE_REGION_POLITE)

推荐阅读