Android Lint contentDescription警告


130

imageviewに対して「[Accessibility] Missing contentDescription attribute on image」という警告が表示されます。Android Lintの使用中

どういう意味ですか?


5
これは、このような迷惑な警告です-特に見栄えをよくするための画像の場合
誰かがどこか

6
私はstrings.xmlでこれを定義し、<string name="none"></string> それから私は使用しましたandroid:contentDescription="@string/none"
誰か誰かどこか

回答:


170

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

android:contentDescription="@string/desc"

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

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

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


4
あなたはより多くのそれについて読み、に行くことによって自分でそれをテストすることができます。android-developers.blogspot.com/2012/04/...developer.android.com/guide/topics/ui/accessibility/...
Androidデベロッパー

49

Lintの警告を無効にすると、後で問題が発生しやすくなります。すべてのImageViewにcontentDescriptionを指定するだけの方がよいでしょう。説明が必要ない場合は、次のように使用します。

android:contentDescription="@null"

38

別のオプションは警告を個別に抑制することです:

xmlns:tools="http://schemas.android.com/tools"  (usually inserted automatically)
tools:ignore="contentDescription"

例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    tools:ignore="contentDescription" >

       <ImageView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:padding="5dp"
            android:src="@drawable/icon" />

不正解-tools:ignore = "contentDescription"をRelativeLayoutに追加すると、「属性にAndroid名前空間プレフィックスがありません」というコンパイルエラーが発生しました
G. Kh。

3
これは日食の問題です。プロジェクトをクリーンアップするだけです。また、xmlns:tools = " schemas.android.com/tools "も含まれていることを確認してください。
Gunnar Bernstein

24

contentDescriptionを追加することをお勧めします。

android:contentDescription="@string/contentDescriptionXxxx"

しかし、現実的になりましょう。ほとんどの人はアクセシビリティのためにリテラルを維持しません。それでも、少しの努力で、障害を持つ人々を助ける何かを実装することができます。

<string name="contentDescriptionUseless">deco</string>
<string name="contentDescriptionAction">button de action</string>
<string name="contentDescriptionContent">image with data</string>
<string name="contentDescriptionUserContent">image from an other user</string>

視覚障害者が知っておくべき最も重要なことは、「続行するためにクリックする必要のあるボタンはどこにあるか」です。

クリック可能なものにはcontentDescriptionActionを使用します。

contentDescriptionContentを情報付きの画像に使用します(グラフ、textAsImage、...)

ユーザーが提供するすべてのコンテンツにはcontentDescriptionUserContentを使用します。

残りのコンテンツにはcontentDescriptionUselessを使用します。


1
ありがとう!警告を抑制する代わりに、この説明を提供することは常に最良の選択です。
ViniciusPaldês、2015

12

これは単なる警告なので、抑制できます。XMLのグラフィカルレイアウトに移動して、次の操作を行います。

  1. 右上の赤いボタンをクリックします

    ここに画像の説明を入力してください

  2. 「問題の種類を無効にする」を選択します(例)

    ここに画像の説明を入力してください


4
確かにそれ抑制できますが、Androidが提供するユーザー補助ツールに依存するユーザーのために、おそらく選択した回答のアドバイスに従う必要があります。
カイルファルコナー2013年

これだよ!!!それが私が探していたものです。この答えと@Gunnar Bernsteinの答えに私は気づきました。
IronBlossom 2015

3

この警告をエレガントな方法で抑制したい場合(この特定のImageViewにはアクセシビリティは必要ないことが確実なため)、特別な属性を使用できます。

android:importantForAccessibility="no"

2

Gradleファイル(モジュールアプリ)に移動し、コードブロックの下に追加します

android {
    ... 
    lintOptions {
        disable 'ContentDescription'
    }
    ...
}

警告はもうありません!幸せなコーディング


幸せなコーディングですが、これは実際にそれに依存している人々のアクセシビリティを損なうことに注意してください
私はカエルのドラゴンです

1

非テキストウィジェットは、スクリーンリーダーがユーザーインターフェースを説明できるように、画像をテキストで説明するために、何らかの方法でコンテンツの説明を必要とします。プロパティを無視するか、プロパティを定義できますxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"


1

ContentDescriptionAndroidのアクセシビリティに必要です。特にスクリーンリーダー機能。Androidのアクセシビリティをサポートしていない場合は、セットアップLintで無視できます。

したがって、単に作成しますlint.xml

<?xml version="1.0" encoding="UTF-8"?>
<lint>

    <issue id="ContentDescription" severity="ignore" />

</lint>

そしてそれをappフォルダに入れます。

ここに画像の説明を入力してください


1

純粋に装飾的なグラフィック要素の場合、それぞれのandroid:contentDescription XML属性を "@null"に設定します。

アプリがAndroid 4.1(APIレベル16)以降を実行しているデバイスのみをサポートしている場合は、代わりにこれらの要素のandroid:importantForAccessibility XML属性を「no」に設定できます


android:importantForAccessibiltyはまさに私が探していたものでした。ありがとうございました!
Hrafn

これは確かに正しい答えであり、一番上になるはずです。
lsrom

0

美学のためだけにアイコンを追加するためにImageViewが必要なのでtools:ignore="ContentDescription"、xmlファイルにある各ImageView内に追加しました。

エラーメッセージが表示されなくなった

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.