内容标签

无障碍服务(如屏幕阅读器)的用户依靠内容标签来了解界面中元素的含义。

在某些情况下(例如,信息以图形方式在元素中呈现),内容标签可以就该元素的含义或相关操作提供文字说明。

如果界面中的元素没有提供内容标签,则一些用户可能难以理解呈现给他们的信息或者无法在界面中执行操作。

实施步骤

视图

如果界面中使用了某些类型的 View,则应提供相应的内容标签,以说明该 View 的用途或相关的操作。

如何提供内容标签

android:contentDescription

如果使用 ImageViewImageButtonCheckBox 或其他以图形方式传达信息的 View,请使用 android:contentDescription 属性为该 View 提供内容标签。

内容标签有时取决于仅在运行时呈现的信息;View 的含义也可能随时间不断变化。例如,在音乐播放期间,播放按钮可能变为暂停按钮。在这种情况下,请使用 View#setContentDescription(CharSequence contentDescription) 适时更新内容标签。

一般情况下,如果无障碍服务提供关于 ViewGroup 的说明,则会将来自其子 View 的内容标签合并在一起。如要覆盖此行为,并指明您希望为该项及其不可聚焦的子 View 提供您所需的说明,请在 ViewGroup 上设置 contentDescription。在 ViewGroup 上设置时,您可能需要在 contentDescription 中包含子 View 的内容标签。

android:hint

对于 EditText 或可编辑的 TextView,请使用 android:hint 属性指明文本字段的用途。您不得将 android:contentDescription 用作可编辑 View 的内容标签

android:labelFor

使用 android:labelFor 属性指明某个 View 应该用作其他 View 的内容标签。

不需要内容标签的情况

在某些情况下,不得专门提供内容标签:

  • TextView(或其子类)中呈现的文字会自动提供给无障碍服务,通常不需要提供额外的内容标签。
  • 装饰性图片或并非以图形方式传达有意义信息的图片不需要内容标签。在这些情况下,请将 android:contentDescription 属性设置为“@null”或将 android:importantForAccessibility 属性设置为“no”。

如要了解详情,请参阅 Android 开发者培训API 指南,阅读实现内容标签的相关信息。

可组合项

如果界面中使用了某些类型的可组合项,则应包含相应的内容标签,以说明该可组合项的用途或相关的操作。

如何提供内容标签

内容说明

如要为图片图标或其他传达图形信息的低级可组合项提供内容标签,请设置内容说明。

  • 内容标签可能取决于运行时信息,因而可组合项的含义可能会发生变化。例如,在音乐播放期间,播放按钮可能变为暂停按钮。
  • 在某些情况下,您可能希望将多个元素合并为单个可聚焦元素,并在其中合并其后代元素的内容标签。了解如何合并元素

label 参数

某些可组合项(如 TextField)支持可选的 label 参数。设置 label 后,元素会显示传递到该 label 的可组合项。无障碍服务可用于描述可组合项。

不需要内容标签的情况

在某些情况下,不得添加内容标签:

  • Text 中呈现的文字或包含 Text 的其他可组合项会自动提供给无障碍服务。
  • 装饰性图片或并非以图形方式传达有意义信息的图片。
    • 在这些情况下,请将 contentDescription 参数或 Modifier.semantics#contentDescription 属性设为 null 或者调用 Modifier#clearAndSetSemantics

设计

在设计界面时,请仔细思考如何为以图形方式呈现的内容添加标签,以方便用户使用无障碍服务。内容标签应该遵循以下准则:

  • 简明扼要地说明元素的含义或相关的操作。
  • 不要在内容标签中加入元素的类型或状态
  • 如果元素与某项操作相关,请说明具体操作,而非以图示说明。
  • 不要说明用户与元素的具体互动方法。

如要了解详情,请参阅 Material Design 无障碍文案指南

测试

如要手动验证应用的界面是否缺少内容标签,请执行以下操作:

  1. 开启 TalkBack
  2. 打开应用。
  3. 使用线性导航手势将无障碍功能焦点移动到屏幕中的各个元素上。
  4. 如果 TalkBack 将焦点移动到一些元素,但没有朗读关于相应元素的有意义的描述,或朗读“无标签”消息,则说明该元素可能缺少内容标签。

Android 的自动测试工具能够检测出缺失的内容标签。您也可以考虑使用 Android 版无障碍功能扫描仪对设备上的应用进行人工测试。如要实现自动化测试,请在 EspressoRobolectric 中开启无障碍检查功能。

搜索
清除搜索内容
关闭搜索框
主菜单
239193287920684122
true
搜索支持中心
true
true
true
true
true
717068
false
false