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


222

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

これにより、アプリケーションをビルドして実行するときにエラーが発生しません。しかし、私はなぜこの警告が出るのか本当に知りたいのです。

これは私の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>

これに関して私を助けてください、そしてあなたの読書に感謝します。


6
新しいADTバージョンの提案では、android:contentDescriptionこの属性をに追加しますimageview。単なる提案です。これは無視してかまいません。コンパイルエラーは発生しません。また、確認することもできますhttp://developer.android.com/reference/android/view/View.html#attr_android:contentDescription
idiottiger

はい、そうです
Rahul Kushwaha

回答:


269

解決策については、このリンクに従ってください: Android Lint contentDescription警告

ImageViewの属性android:contentDescriptionを設定することにより、この警告を解決しました

android:contentDescription = "@ string / desc"

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

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

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

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

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

Androidは、テキスト読み上げ、触覚フィードバック、トラックボール、D-padナビゲーションなど、ユーザーのエクスペリエンスをさらに向上させるために、これらのユーザーがデバイスをより簡単にナビゲートできるようにするためのアクセシビリティ機能とサービスを提供します。Androidアプリケーション開発者は、これらのサービスを利用して、アプリケーションのアクセシビリティを高め、独自のアクセシビリティサービスを構築することもできます。

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

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

  1. ImageButtonImageViewEditTextにラベルを付けますandroid:contentDescription属性を使用して、CheckBoxおよびその他のユーザーインターフェイスコントロールにます。

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

  3. TalkBackやタッチガイドなどのユーザー補助機能サービスをオンにしてアプリケーションをテストし、方向制御のみを使用してアプリケーションを使用してみてください。


92
もう一つ重要な注意!この場合、画像は純粋に装飾的であり、ユーザーに追加情報を提供していないように見えます。たとえば、ユーザーに「連絡先の画像」を話したくないが、そのテキストを他の場所に表示しない場合は、「ボブのプロフィール写真」を話したいと思うかもしれません。ユーザーに画像を話させない場合は、android:contentDescription = "@ null"を設定すると、警告が表示されなくなります。
2013年

1
@alanv:素晴らしいコメント。一般的に推奨されているように警告を完全に無効にするよりもはるかに優れています。
ChiefTwoPencils 2014

13
実際、android:contentDescription = "@ null"が最善の解決策だとは思いません。私は使用するtools:ignore = "ContentDescription"を使用しています。ルートレイアウトにxmlns:tools = " schemas.android.com/tools " が含まれていることを確認してください。
ソッティ2014

そのような素晴らしいドキュメントを提供してくれてありがとう。壁紙ギャラリーアプリのような画像がある場合、すべての画像にコンテンツの説明を追加するのに適していますか?また、アプリのパフォーマンスに影響を与える可能性がありますか?
Rahul Mandaliya 2017年

67

android:contentDescription="@string/description"ImageView に(静的または動的)を追加します。メッセージを無視したり、フィルタリングしたりしないでください。その理由は、(TalkBackやTecla Access Shieldなどの)障害のために、代替の入力方法を使用している人々に役立つからです。


@ Jeroen-説明を追加すると、「リソース@ string / loginTextを解決できませんでした」と表示されます-なぜですか?
Jamal Zafar 2013

文字列XMLにloginText文字列がありますか?
Praveen 2013

1
@JamalZafarは、string.xmlにloginTextという名前の文字列を作成します
Ayush Goyal

36

更新しました:

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

古い答え、私はもはやこの答えをサポートしていません:

警告を回避する方法を探しているすべての人にとって:

私はandroid:contentDescription="@null"最良の解決策ではないと思います。

私が使用tools:ignore="ContentDescription"しているのは、本来あるべきものです。

xmlns:tools="http://schemas.android.com/tools"ルートレイアウトに必ず含めてください。


1
これはグーグルが推奨したものでもあるので、賛成する必要があります
Le Dinh Nhat Khanh

4
@nullcontentDescriptionとして使用することは、この画像が純粋に装飾的なものであることを明示的に示す方法です。警告を無視するだけでは正しい解決策ではありません。
karl

1
を使用する@nullと、画像が装飾的であることがTalkBackに通知されます。置くと@nullTalkBackに警告が表示され、欠落していると思われるのではなく、警告が無視されます。
アブ

10

追加

tools:ignore="ContentDescription"

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


1
+1。これは、この問題に対するAndroid Studioの修正です(コード分析を実行すると、「lintの抑制」ボタンがそれを行います)
noamgot

9

警告は確かに迷惑であり、多くの(ほとんどの場合)場合、さまざまな装飾的なImageViewにcontentDescriptionは必要ありません。問題を解決する最も根本的な方法は、このチェックを無視するようにリントに指示することです。Eclipseで、[環境設定]の[Android / Lintエラーチェック]に移動し、[コンテンツの説明]([ユーザー補助]グループにあります)を見つけて、[重大度]を[無視]に変更します。


9
この警告は無視しないでください。他の人が指摘したように、アクセシビリティは単なる装飾的な画像であっても重要です。それは希望contentDescriptionを追加するには大したない
jamesc

1
アプリがコンテンツの説明があっても本質的にアクセスできないものである場合は、警告を無視することもできます。たとえば、なぜcontentDescription視力を必要とするゲームで悩むのでしょうか?
CorayThan 2014

はい、それ根本的な選択です。それで、その目的を認識していて、遵守したい人々は何をしますか?この特定のケースでは、「ほとんどの」ケースを忘れると言いましょう。それは、「ほとんどの」人々が、例えば、視覚障害者ではないので、それは不必要な警告であるということを意味しているように思われますか?画像の「ほとんど」にそのようなコンテンツが必要ない場合-細かい場合は、警告を無効にしますが、意味のある場所に追加してください。少し役立つことは長い道のりを行くことができます。
ChiefTwoPencils 2014

9

まったく気にしない場合は、次のようにします。

    android:contentDescription="@null"

私は受け入れられた解決策をアドバイスしますが、これはハックです:D


3
実際、android:contentDescription = "@ null"が最善の解決策だとは思いません。私は使用するtools:ignore = "ContentDescription"を使用しています。ルートレイアウトにxmlns:tools = " schemas.android.com/tools " が含まれていることを確認してください。
Sotti、2014

誰もそうは言っていない。コメントをもう一度読んでください。警告を無視するだけなので、提供するソリューションは間違いなく悪化します。最も受け入れられた答えをもう一度読んでください。
2014年

5

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

android:importantForAccessibility="no"

下位のバージョンを実行しているデバイスはこの属性を無視するため、最小SDKバージョンが16以上の場合、これは理にかなっています。

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

android:contentDescription="@null"

ソース:https : //developer.android.com/guide/topics/ui/accessibility/apps#label-elements


2

この警告は、アプリケーションのアクセシビリティを改善しようとします。

プロジェクト全体で不足しているコンテンツの説明の警告を無効にするには、これをアプリケーションモジュールbuild.gradleに追加できます。

android {

    ...

    lintOptions {
        disable 'ContentDescription'
    }
}

0

画像の説明が定義されていないため、警告が表示されます。

この警告を解決するには、以下のコードをStrings.xmlおよびactivity_main.xmlに追加します。

以下の行をStrings.xmlに追加します

<string name="imgDescription">Background Picture</string>
you image will be like that:
<ImageView
        android:id="@+id/imageView2"
        android:lay`enter code hereout_width="0dp"
        android:layout_height="wrap_content"
        android:contentDescription="@string/imgDescription"
        app:layout_editor_absoluteX="0dp"
        app:layout_editor_absoluteY="0dp"
        app:srcCompat="@drawable/background1"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />

この行をactivity_main.xmlにも追加します

android:contentDescription="@string/imgDescription"

Strings.xml

<resources>
    <string name="app_name">Saini_Browser</string>
    <string name="SainiBrowser">textView2</string>
    <string name="imgDescription">BackGround Picture</string>
</resources>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.