带类型或状态标签的内容

背景

无障碍服务(如屏幕阅读器)的用户依靠文字标签与界面进行互动。

屏幕阅读器会读出文字标签以及与元素类型或状态相关的信息。因此,应用开发者没有必要在标签中添加有关类型和状态的信息。例如:

  • 当 TalkBack 宣读可点击 Button 元素时,会为开发者所提供的文字标签附加“按钮”一词。如果开发者在文字标签中加入“按钮”(例如“保存按钮”),TalkBack 可能会将“按钮”一词提示两遍(“保存按钮按钮”)。
  • 如果界面包含 CheckBox 元素,屏幕阅读器会判断相应元素是否被选中,并提示“已选中”或“未选中”以及开发者所提供的文字标签。如果开发者在文字标签中加入了“已选中”或“未选中”,那么用户就可能会听到两遍该信息。

实施

标准元素

在为由 Android SDK、Android 支持库或 Android 设计支持库提供的标准界面元素提供文字标签时,请使用简短的本地化字符串说明元素有什么功能或代表什么含义。

配置完善的界面不会向 android:contentDescriptionandroid:textandroid:hint 属性的值中添加元素类型或状态说明。

自定义 View

使用自定义 View 创建界面元素时,请根据您的使用情形,扩展最相关的 View 子类。这样一来,自定义 View 的实施即可尽可能多地继承平台标准化的无障碍互动行为,而且在许多情况下,View 的类型和状态的适当呈现方式是以应用的名义进行管理。

应用可能会使用 AccessibilityDelegateView#onInitializeAccessibilityNodeInfo 修改自定义 View 向无障碍服务显示的方式(包括如何呈现其类型或状态)。使用此方法的必要条件是 View 必须直接管理自身的 AccessibilityNodeInfo 呈现方式。

对于包含复杂信息层级或能够执行多种操作的自定义 View,ExploreByTouchHelper 可将其简化,以便向 Android 的无障碍服务呈现虚拟的 View 层级。

设计

请查看 Material Design 无障碍指南,以了解更多有关如何针对无障碍用途编写有效标签的指南。

测试

要手动识别带类型或状态标签的界面元素,请按照以下步骤操作:

  1. 开启 TalkBack。
  2. 打开应用。
  3. 将无障碍功能焦点移至要评估的内容上。
  4. 听 TalkBack 朗读已聚焦项的说明。检查相应项的类型或状态是否在此说明中出现了不止一次。

Android 的自动化测试工具能够检测到一些界面元素带有类型或状态标签的情况。不妨考虑使用 Android 版无障碍功能扫描仪对设备上的应用进行人工测试。要实现自动化测试,请在 EspressoRobolectric 中开启无障碍检查功能。