web-dev-qa-db-ja.com

XMLの「画像にcontentDescription属性がありません」

[アクセシビリティ] EclipseのimageにcontentDescription属性がないという警告が表示されます。この警告は、以下のXMLコードの5行目(ImageViewを宣言)に表示されます。

アプリケーションをビルドして実行しても、これはエラーにはなりません。しかし、私は本当に私がこの警告を受ける理由を知りたいです。

これは私のXMLファイルです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
              Android:layout_width="fill_parent"
              Android:layout_height="wrap_content">
    <ImageView
        Android:id="@+id/contact_entry_image"
        Android:src="@drawable/ic_launcher"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        />
    <TextView
        Android:id="@+id/contact_entry_text"
        Android:text=""
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:textSize="30sp"
        />

</LinearLayout>

これに関して私を助けてください、そしてあなたの読書をありがとう。

199
PhatHV

解決のためにこのリンクをたどってください:Android LintのcontentDescriptionの警告

ImageViewの属性Android:contentDescriptionを設定して、この警告を解決しました。

Android:contentDescription = "@文字列/ desc"

ADT 16でのAndroid Lintのサポートは、画像ウィジェットがcontentDescriptionを提供するようにするためにこの警告をスローします。

これは、ビューの内容を簡単に説明するテキストを定義します。このプロパティは主にアクセシビリティのために使用されます。一部のビューはテキスト表現を持たないので、この属性はそれを提供するために使用できます。

ImageViewやImageButtonなどの非テキストウィジェットは、contentDescription属性を使用してウィジェットのテキスト記述を指定し、スクリーンリーダーや他のユーザー補助ツールでユーザーインターフェイスを適切に記述できるようにする必要があります。

説明のためのこのリンク:アクセシビリティ、その影響と開発リソース

多くのAndroidユーザーは、さまざまな方法で自分のAndroidデバイスとやり取りする必要があるという障害を抱えています。これらには、視覚障害、身体障害、または年齢に関連した障害があり、タッチスクリーンを完全に見たり使用したりできないユーザーが含まれます。

Androidは、これらのユーザーがより簡単にデバイスをナビゲートできるようにするためのユーザー補助機能とサービスを提供しています。 Androidアプリケーション開発者は、これらのサービスを利用して自分のアプリケーションをよりアクセスしやすくし、独自のアクセシビリティサービスを構築することもできます。

このガイドはあなたのアプリをアクセシブルにするためのものです:アプリをよりアクセシブルにする

アプリケーションがすべてのユーザーにアクセス可能であることを確認することは、特にフレームワーク提供のユーザーインターフェイスコンポーネントを使用する場合は比較的簡単です。アプリケーションにこれらの標準コンポーネントのみを使用する場合は、アプリケーションにアクセスできるようにするために必要な手順がいくつかあります。

  1. あなたのImageButtonImageViewEditTextCheckBoxおよび他のユーザーインターフェースは、Android:contentDescription属性を使用して制御します。

  2. トラックボールやDパッドなどの方向コントローラを使って、すべてのユーザーインターフェイス要素にアクセスできるようにします。

  3. TalkBackやExplore by Touchなどのユーザー補助サービスをオンにしてアプリケーションをテストし、方向制御だけを使用してアプリケーションを使用してみてください。

256
PhatHV

ImageViewにAndroid:contentDescription="@string/description"(静的または動的)を追加します。メッセージを無視したり、フィルタをかけたりしないでください。障害があるため(TalkBack、Tecla Access Shieldなどのように)代替の入力方法を使用している人に役立ちます。

65
Jeroen

更新:

コメントで指摘されているように、説明をnullに設定することは、その画像が純粋に装飾的であり、TalkBackのようなスクリーンリーダーによるものとして理解されることを意味します。

昔の答え、私はもうこの答えを支持していません:

警告を回避する方法を探しているすべての人々のために:

私はAndroid:contentDescription="@null"が最善の解決策だとは思わない。

私はtools:ignore="ContentDescription"を使っています。

ルートレイアウトにxmlns:tools="http://schemas.Android.com/tools"を含めるようにしてください。

33
Sotti

この警告は確かに煩わしく、多くの(ほとんどの場合)場合、さまざまな装飾的なImageViewにはcontentDescriptionは必要ありません。問題を解決するための最も根本的な方法は、このチェックを無視するようにLintに指示することです。 Eclipseでは、Preferencesの "Android/Lint Error Checking"に行き、 "contentDescription"( "Accessibility"グループ内)を見つけ、 "Severity:"を無視に変更します。

9
AlexR

まったく気にしないのであれば、こうしてください。

    Android:contentDescription="@null"

私は容認された解決策をお勧めしますが、これはハックです:D

9
alap

追加する

tools:ignore="ContentDescription"

あなたのイメージに。ルートレイアウトにxmlns:tools="http://schemas.Android.com/tools" .があることを確認してください。

8
Mwongera808

将来的には、純粋に装飾的なグラフィック要素の場合、最善の解決策は次のものを使用することです。

Android:importantForAccessibility="no"

これより小さいバージョンを実行しているデバイスはこの属性を無視するので、これはあなたのmin SDKのバージョンが少なくとも16であれば意味があります。

古いバージョンをサポートしていない場合は、(他の人がすでに指摘しているように)使用する必要があります。

Android:contentDescription="@null"

出典: https://developer.Android.com/guide/topics/ui/accessibility/apps#label-elements

0
arekolek