ChatGPT解决这个技术问题 Extra ChatGPT

Android Lint contentDescription warning

I am getting warning as "[Accessibility] Missing contentDescription attribute on image" for imageview. while using android lint

What does that mean?

this is such an annoying warning - especially for images that are just for flair
I defined this in the strings.xml: <string name="none"></string> and then I used android:contentDescription="@string/none"

H
Hasturkun

Resolved this warning by setting attribute android:contentDescription for my ImageView

android:contentDescription="@string/desc"

Android Lint support in ADT 16 throws this warning to ensure that image widgets provide a contentDescription.

This defines text that briefly describes content of the view. This property is used primarily for accessibility. Since some views do not have textual representation this attribute can be used for providing such.

Non-textual widgets like ImageViews and ImageButtons should use the contentDescription attribute to specify a textual description of the widget such that screen readers and other accessibility tools can adequately describe the user interface.


you can read more about it and test it by yourself by going to : android-developers.blogspot.com/2012/04/… and developer.android.com/guide/topics/ui/accessibility/…
D
Dane White

Disabling Lint warnings will easily get you into trouble later on. You're better off just specifying contentDescription for all of your ImageViews. If you don't need a description, then just use:

android:contentDescription="@null"

G
Gunnar Bernstein

Another option is to suppress the warning individually:

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

Example:

<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" />

Incorrect - adding tools:ignore="contentDescription" into RelativeLayout led to compile error "Attribute is missing the Android namespace prefix"
This is an eclipse issue. Just clean your project. And make sure: xmlns:tools="schemas.android.com/tools" is also included!
C
Christ

I recommend you to add the contentDescription.

android:contentDescription="@string/contentDescriptionXxxx"

but, let's be realistic. Most people don't maintain literal for accessibility. Still, with little effort, you can implement something to help people with disability.

<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>

.

The most important thing the blind user will need to know is "Where is the button that I need to click to continue"

Use contentDescriptionAction for anything clickable.

use contentDescriptionContent for image with information (graph, textAsImage, ...)

use contentDescriptionUserContent for all user provided content.

use contentDescriptionUseless for all the rest.


Thanks! Is always a best choice to provide this description instead to suppress warning.
S
Sergio Carneiro

Since it is only a warning you can suppress it. Go to your XML's Graphical Layout and do this:

Click on the right top corner red button Select "Disable Issue Type" (for example)


True, you can suppress it, but you probably should follow the advice of the selected answer, for the sake of the users who rely on the accessibility tools Android provides.
This is it!!! thats what i was looking for. This answer and @Gunnar Bernstein's answer got me.
G
GianhTran

Go to Gradle file (module app), add below code block

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

No more warning! happy coding


happy coding, but note that this will harm the accessibility for people who actually rely on it
A
Alexander Bernat

If you want to suppress this warning in elegant way (because you are sure that accessibility is not needed for this particular ImageView), you can use special attribute:

android:importantForAccessibility="no"

Y
Yvgen

ContentDescription needed for the Android accessibility. Particularly for the screen reader feature. If you don't support Android accessibility you can ignore it with setup Lint.

So just create lint.xml.

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

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

</lint>

And put it to the app folder.

https://i.stack.imgur.com/kEKrf.png


A
AnhSang

For graphical elements that are purely decorative, set their respective android:contentDescription XML attributes to "@null".

If your app only supports devices running Android 4.1 (API level 16) or higher, you can instead set these elements' android:importantForAccessibility XML attributes to "no"


android:importantForAccessibilty was exactly what I was looking for. Thank you!
This is indeed the correct answer and should be the top one.
F
Fokou Franklin

Non textual widgets need a content description in some ways to describe textually the image so that screens readers to be able to describe the user interface. You can ignore the property xmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
or define the property android:contentDescription="your description"


a
alexander.polomodov

Since I need the ImageView to add an icon just for aesthetics I've added tools:ignore="ContentDescription" within each ImageView I had in my xml file.

I'm no longer getting any error messages