可编辑的 View 标签

背景

应用中的可编辑项可让用户输入文字。每一个可编辑项都应带有一个说明性标签,以便说明各自的用途。

Android 为开发者提供了几种为应用界面中的 View 添加标签的方法。对于界面中的可编辑项,其中一些标注方式可以改进无障碍功能。

实现

要为可编辑的 TextViewEditText 添加标签,请在其为空时使用 android:hint 在相应项中显示说明性文字标签。

                    
<EditText
    android:id="@+id/email_subject"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/email_subject_hint" />
                    
                  

如果应用界面已针对可编辑项提供文字标签,则在所标注的 View 上定义 android:labelFor,以指出标签描述的是哪一项。

                    
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/email_subject_label"
        android:labelFor="@id/email_subject" />
    <EditText
        android:id="@+id/email_subject"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
                    
                  

提示Android 设计支持库中的 TextInputLayout 可帮助您轻松管理 EditText 以及相关联的文字标签,并可与 Android 的无障碍服务完美配合使用。

如果在任何 EditText 或可编辑的 TextView 上定义 android:contentDescription,则可能会干扰无障碍服务说明、导航以及与文字(由用户在相应可编辑项中输入)互动的功能。

设计

借助屏幕阅读器导航到可编辑项的过程中,配置完善的界面会包含以下元素:

  • 如果可编辑字段为空,其中会有说明性标签可供屏幕阅读器朗读。
  • 如果用户已在可编辑字段中输入文字,则屏幕阅读器会改为朗读这些文字,而非标签。

即使是在按较小单位进行导航时(例如,按字符进行导航),这两项元素也仍适用。

测试

要手动验证应用所含可编辑项的标签是否正确,请按照以下步骤操作:

  1. 开启 TalkBack。
  2. 打开应用。
  3. 将无障碍功能焦点移至相应的空白可编辑项上。
  4. 听 TalkBack 朗读有关空白可编辑项的说明。检查此说明是否包含标签,以及相应的说明性标签是否与应用中任何直观显示的标签相符。
  5. 在相应的可编辑项中输入一些文字。
  6. 将无障碍功能焦点移至相应的可编辑项上。
  7. 将无障碍功能焦点移至相应的可编辑项上。
  8. 听 TalkBack 朗读现已包含文字的可编辑项的说明。检查此说明是否包含您输入的文字。
  9. 打开 TalkBack 的本地上下文菜单,并将导航朗读单位切换为“字符”。
  10. 使用滑动手势逐字母移动可编辑项的光标。检查 TalkBack 对于每个导航操作所朗读的说明是否是输入的字符,而非该项的标签。

Android 的自动化测试工具能够检测到可编辑项上的非空 contentDescription。不妨考虑使用 Android 版无障碍功能扫描仪对设备上的应用进行人工测试。要实现自动化测试,请在 EspressoRobolectric 中开启无障碍检查功能。