1

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

  • 宣布“$listSize items in list”,因为应用过滤器会改变列表大小
  • 将焦点设置为“添加过滤器”按钮

我尝试了以下方法:

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

我希望 TalkBack 按顺序阅读:

  • “列表中有 20 项”
  • “过滤器按钮”

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

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

4

1 回答 1

3

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

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

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

ViewCompat.setAccessibilityLiveRegion(itemCountTextView, ACCESSIBILITY_LIVE_REGION_POLITE)
于 2019-05-12T03:39:05.823 回答