コンテンツ ラベル

背景情報

スクリーン リーダーなどのユーザー補助機能サービスを利用している場合は、コンテンツ ラベルを通してユーザー インターフェースの各要素の意味を把握することになります。

要素内で画像を使って情報を伝えるときなど、コンテンツ ラベルで、その要素に関連付けられている意味やアクションをテキストで説明できることもあります。

ユーザー インターフェースの要素にコンテンツ ラベルが設定されていないと、ユーザーが目的の情報を理解したり、インターフェースで操作を実行したりすることが難しくなる可能性があります。

実装

インターフェースで使用されている View のタイプによっては、コンテンツ ラベルを設定し、その View に関連付けられている目的や操作を説明する必要があります。

コンテンツ ラベルを設定する方法

android:contentDescription

ImageViewImageButtonCheckBox など、情報を画像で伝える View を使用している場合は、android:contentDescription 属性を使用して、その View のコンテンツ ラベルを設定します。

コンテンツ ラベルは、実行時に入手可能な情報のみを利用することがあります。つまり、View の意味は状況に応じて変わる可能性があります。たとえば、音楽の再生中に [再生] ボタンが [一時停止] ボタンに変わるとします。この場合は、View#setContentDescription(CharSequence contentDescription) を使用して、適宜にコンテンツ ラベルを更新します。

通常、ユーザー補助機能サービスで ViewGroup を記述する場合は、その子 View のコンテンツ ラベルと組み合わせます。この動作をオーバーライドし、そのアイテムとフォーカス不可能な子 View の独自の説明を提供することを指定するには、ViewGroupcontentDescription を設定します。ViewGroup で設定する場合、contentDescription 内に子 View のコンテンツ ラベルを含めることが必要になる場合もあります。

android:hint

EditText または編集可能な TextView では、android:hint 属性を使用してテキスト項目の目的を指定します。android:contentDescription編集可能な View のコンテンツ ラベルとして使用することはできません。

android:labelFor

View を別の View のコンテンツ ラベルとして使用することを指定するには、android:labelFor 属性を使用します。

コンテンツ ラベルが必要ないケース

コンテンツ ラベルが特に必要ないケースもあります。

  • TextView(またはそのサブクラス)でレンダリングされるテキストは、ユーザー補助機能サービスに自動的に提供されます。通常、コンテンツ ラベルを追加する必要はありません。
  • 意味のある情報を伝えない装飾的な画像には、コンテンツ ラベルは必要ありません。この場合は、"@null"android:contentDescription 属性または "no"android:importantForAccessibility 属性を設定します。

詳しくは、Android デベロッパー トレーニングAPI ガイドでコンテンツ ラベルの実装についての説明をご覧ください。

デザイン

ユーザー インターフェースをデザインする場合は、画像で表現するコンテンツのラベルをどのように設定すればユーザー補助機能サービスのユーザーに役立つかをよく検討してください。コンテンツ ラベルの方針は、次のとおりです。

  • 要素に関連付けられた意味や操作を簡潔にわかりやすく説明すること。
  • コンテンツ ラベルに要素のタイプや状態を含めないこと。
  • 要素が操作に関連付けられている場合は、画像ではなく、その操作を説明すること。
  • 要素の具体的な操作方法をユーザーに指示しないこと。

詳しくは、ユーザー補助機能のマテリアル デザインに関する作成ガイドラインをご覧ください。

テスト

アプリのユーザー インターフェースにコンテンツ ラベルが欠落していないことを手動で確認するには:

  1. Talkback を有効にします
  2. アプリを開きます。
  3. 直線的なナビゲーション操作を使用して、ユーザー補助機能のフォーカスを画面上の各要素に移動します。
  4. TalkBack がフォーカスをある要素に移動したときに、その要素の説明が音声で出力されない場合や、「ラベルはありません」という音声が出力された場合は、その要素にコンテンツ ラベルが設定されていない可能性があります。

欠落しているコンテンツ ラベルは、Android の自動テストツールで検出できます。端末上でのアプリの手動テストには Android 用ユーザー補助検証ツールを使用することをおすすめします。自動テストでは、EspressoRobolectric でユーザー補助機能の確認を有効にします。

検索
検索をクリア
検索を終了
Google アプリ
メインメニュー
ヘルプセンターを検索
true
717068
false