可编辑的 View 标签
背景
应用中的可编辑项可让用户输入文字。每一个可编辑项都应带有一个说明性标签,以便说明各自的用途。
Android 为开发者提供了几种为应用界面中的 View
添加标签的方法。对于界面中的可编辑项,其中一些标注方式可以改进无障碍功能。
实现
要为可编辑的 TextView
或 EditText
添加标签,请在其为空时使用 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
,则可能会干扰无障碍服务说明、导航以及与文字(由用户在相应可编辑项中输入)互动的功能。
设计
借助屏幕阅读器导航到可编辑项的过程中,配置完善的界面会包含以下元素:
- 如果可编辑字段为空,其中会有说明性标签可供屏幕阅读器朗读。
- 如果用户已在可编辑字段中输入文字,则屏幕阅读器会改为朗读这些文字,而非标签。
即使是在按较小单位进行导航时(例如,按字符进行导航),这两项元素也仍适用。
测试
要手动验证应用所含可编辑项的标签是否正确,请按照以下步骤操作:
- 开启 TalkBack。
- 打开应用。
- 将无障碍功能焦点移至相应的空白可编辑项上。
- 听 TalkBack 朗读有关空白可编辑项的说明。检查此说明是否包含标签,以及相应的说明性标签是否与应用中任何直观显示的标签相符。
- 在相应的可编辑项中输入一些文字。
- 将无障碍功能焦点移至相应的可编辑项上。
- 将无障碍功能焦点移至相应的可编辑项上。
- 听 TalkBack 朗读现已包含文字的可编辑项的说明。检查此说明是否包含您输入的文字。
- 打开 TalkBack 的本地上下文菜单,并将导航朗读单位切换为“字符”。
- 使用滑动手势逐字母移动可编辑项的光标。检查 TalkBack 对于每个导航操作所朗读的说明是否是输入的字符,而非该项的标签。
Android 的自动化测试工具能够检测到可编辑项上的非空 contentDescription
。不妨考虑使用 Android 版无障碍功能扫描仪对设备上的应用进行人工测试。要实现自动化测试,请在 Espresso 和 Robolectric 中开启无障碍检查功能。