我在 Android 上有一个页面,其中包含轮播列表。每个轮播都有一个标题。启用 Talkback 后,当前用户必须从轮播的标题开始,导航每个轮播项目及其所有详细信息,然后读者才能继续阅读页面中的下一个项目(在本例中,是另一个轮播,但它可以是一个段落,任何东西)
我想要实现一个页面,其中屏幕阅读器读取轮播的标题,然后提供一个选项,根据用户的要求深入轮播的子项,或者跳到页面中的下一个顶级项目。我怎样才能实现这个目标?
这是我的屏幕的照片:
您需要使用辅助标题 - 这是简单的语法糖,允许屏幕阅读器用户使用“阅读模式”或“粒度”浏览标题
// kotlin views
ViewCompat.setAccessibilityHeading(header, true)
// XML
<TextView
...
android:accessibilityHeading="true"
/>
// Compose
modifier = Modifier.semantics { heading() }
我已经链接到我的博客,了解标题如何作为屏幕阅读器用户的“导航锚点”(下面的数字 4) - 要点是:
虽然你绝对可以使用像actions这样的东西来准确地实现你所要求的(为用户提供跳到标题的选项),但你还需要控制用户焦点 - 这会很多额外的工作,并且必须考虑任何竞争条件。最重要的是,这并不是 TalkBack 用户真正期望的 - 他们更习惯于标题而不是在移动设备上跳过操作。
另一个好处是标题可以单独存在,您不需要管理组件之间的关系。