【问题标题】:How to make TalkBack read Android accessibility events in order without cutting them off如何让 TalkBack 按顺序读取 Android 辅助功能事件而不切断它们
【发布时间】:2019-01-22 20:50:18
【问题描述】:

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

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

我尝试了以下方法:

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

我希望 TalkBack 按顺序阅读:

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

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

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

【问题讨论】:

  • 我正在寻找完全相同的东西。你找到解决办法了吗?

标签: android android-accessibility android-a11y


【解决方案1】:

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

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

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

ViewCompat.setAccessibilityLiveRegion(itemCountTextView, ACCESSIBILITY_LIVE_REGION_POLITE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多