アプリ内の編集可能なアイテムには、ユーザーがテキストを入力できます。編集可能なアイテムのそれぞれに、その用途を説明するラベルを付ける必要があります。
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 Design Support Library にある TextInputLayout
を利用すると、EditText
と関連するテキストラベルを管理しやすくなり、Android のユーザー補助サービスとの連携が向上します。
EditText
または編集可能な TextView
で android:contentDescription
を定義すると、ユーザー補助サービスと干渉し、ユーザーがアイテム内に入力するテキストの説明や操作に支障が出る可能性があります。
デザイン
ユーザーがスクリーン リーダーを使って編集可能なアイテムに移動する場合、適切に実装されたユーザー インターフェースには以下の要素が含まれます。
- 編集可能なフィールドが空欄の場合、説明ラベルがそこにあり、スクリーン リーダーがそれを読み上げます。
- ユーザーが編集可能なフィールドにテキストを入力すると、スクリーン リーダーは説明ラベルに加えてテキストを読み上げます。
ユーザーがより詳細な操作(個々の文字の入力など)を行うと、スクリーン リーダーは入力したテキストを読み上げます。空の場合はヒントを読み上げます。
テスト
アプリに含まれている編集可能なアイテムが正しくラベル付けされていることを手動で確認するには:
- Talkback を有効にします。
- アプリで、ユーザー補助のフォーカスを、空白の編集可能なアイテムに移動します。
- TalkBack が読み上げた空の編集可能なアイテムについての説明にラベルが含まれているかどうか、また、その説明のラベルがアプリ内に表示されているラベルと一致しているかどうかを確認します。
- 編集可能なアイテムにテキストを入力します。
- ユーザー補助のフォーカスをその編集可能なアイテムに移動します。
- 編集可能なアイテムの TalkBack の説明を聞き、入力したテキストが音声の説明に含まれているかどうかを確認します。
編集可能なアイテムの contentDescription
が空でないことは、Android の自動テストツールで検出できます。デバイス上でのアプリの手動テストには Android 用ユーザー補助検証ツールを使用することをおすすめします。自動テストでは、Espresso と Robolectric でユーザー補助機能の確認を有効にします。