Contenu d'Android Lint Description Avertissement

130

Je reçois un avertissement en tant que "[Accessibilité] Attribut contentDescription manquant sur l'image" pour imageview. lors de l'utilisation de la charpie Android

Qu'est-ce que ça veut dire?

Santhosh Shettigar
la source
5
c'est un avertissement tellement ennuyeux - en particulier pour les images qui sont juste pour le flair
Someone Somewhere
6
J'ai défini cela dans le strings.xml: <string name="none"></string> puis j'ai utiliséandroid:contentDescription="@string/none"
Someone Somewhere

Réponses:

170

Résolution de cet avertissement en définissant l'attribut android:contentDescriptionpour mon ImageView

android:contentDescription="@string/desc"

La prise en charge d'Android Lint dans ADT 16 émet cet avertissement pour garantir que les widgets d'image fournissent une description de contenu.

Cela définit le texte qui décrit brièvement le contenu de la vue. Cette propriété est principalement utilisée pour l'accessibilité. Puisque certaines vues n'ont pas de représentation textuelle, cet attribut peut être utilisé pour fournir une telle.

Les widgets non textuels comme ImageViews et ImageButtons doivent utiliser l'attribut contentDescription pour spécifier une description textuelle du widget de sorte que les lecteurs d'écran et autres outils d'accessibilité puissent décrire correctement l'interface utilisateur.

Santhosh Shettigar
la source
4
vous pouvez en savoir plus et le tester par vous-même en allant sur: android-developers.blogspot.com/2012/04/… et developer.android.com/guide/topics/ui/accessibility/…
développeur android
49

La désactivation des avertissements anti-peluches vous causera facilement des problèmes plus tard. Vous feriez mieux de simplement spécifier contentDescription pour tous vos ImageViews. Si vous n'avez pas besoin d'une description, utilisez simplement:

android:contentDescription="@null"
Dane Blanc
la source
38

Une autre option consiste à supprimer l'avertissement individuellement:

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

Exemple:

<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" />
Gunnar Bernstein
la source
Incorrect - l'ajout d'outils: ignore = "contentDescription" dans RelativeLayout a conduit à une erreur de compilation "L'attribut ne contient pas le préfixe d'espace de noms Android"
G. Kh.
3
C'est un problème d'éclipse. Nettoyez simplement votre projet. Et assurez-vous que: xmlns: tools = " schemas.android.com/tools " est également inclus!
Gunnar Bernstein
24

Je vous recommande d'ajouter le contentDescription.

android:contentDescription="@string/contentDescriptionXxxx"

mais soyons réalistes. La plupart des gens ne maintiennent pas littéralement pour l'accessibilité. Pourtant, avec peu d'efforts, vous pouvez mettre en œuvre quelque chose pour aider les personnes handicapées.

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

.

La chose la plus importante que l'utilisateur aveugle devra savoir est "Où est le bouton sur lequel je dois cliquer pour continuer"

Utilisez contentDescriptionAction pour tout ce qui est cliquable.

use contentDescriptionContent pour l'image avec des informations (graphe, textAsImage, ...)

utilisez contentDescriptionUserContent pour tout le contenu fourni par l'utilisateur.

utiliser contentDescriptionInutile pour tout le reste.

Christ
la source
1
Merci! Est toujours le meilleur choix pour fournir cette description au lieu de supprimer l'avertissement.
Vinicius Paldês
12

Puisqu'il ne s'agit que d'un avertissement, vous pouvez le supprimer. Accédez à la disposition graphique de votre XML et procédez comme suit:

  1. Cliquez sur le bouton rouge du coin supérieur droit

    entrez la description de l'image ici

  2. Sélectionnez "Désactiver le type de problème" (par exemple)

    entrez la description de l'image ici

Sergio Carneiro
la source
4
Certes, vous pouvez le supprimer, mais vous devriez probablement suivre les conseils de la réponse sélectionnée, dans l'intérêt des utilisateurs qui comptent sur les outils d'accessibilité fournis par Android.
Kyle Falconer
Ça y est!!! c'est ce que je cherchais. Cette réponse et la réponse de @Gunnar Bernstein m'ont eu.
IronBlossom
3

Si vous souhaitez supprimer cet avertissement de manière élégante (car vous êtes sûr que l'accessibilité n'est pas nécessaire pour cet ImageView particulier), vous pouvez utiliser un attribut spécial:

android:importantForAccessibility="no"
Alexandre Bernat
la source
2

Aller au Gradlefichier (module app), ajouter le bloc de code ci-dessous

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

Plus d'avertissement! bon codage

GianhTran
la source
bon codage, mais notez que cela nuira à l'accessibilité pour les personnes qui en dépendent
je suis un dragon grenouille
1

Les widgets non textuels ont besoin d'une description du contenu d'une certaine manière pour décrire textuellement l'image afin que les lecteurs d'écran puissent décrire l'interface utilisateur. Vous pouvez ignorer la propriété ou définir la propriétéxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"

Fokou Franklin
la source
1

ContentDescriptionnécessaire pour l'accessibilité Android. En particulier pour la fonction de lecteur d'écran. Si vous ne prenez pas en charge l'accessibilité Android, vous pouvez l'ignorer avec la configuration Lint .

Alors créez simplement lint.xml.

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

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

</lint>

Et mettez-le dans le appdossier.

entrez la description de l'image ici

Yvgen
la source
1

Pour les éléments graphiques purement décoratifs, définissez leurs attributs XML android: contentDescription respectifs sur "@null".

Si votre application ne prend en charge que les appareils exécutant Android 4.1 (niveau d'API 16) ou supérieur, vous pouvez à la place définir les attributs XML android: importantForAccessibility de ces éléments sur "non".

AnhSang
la source
android: importantForAccessibilty était exactement ce que je recherchais. Je vous remercie!
Hrafn le
C'est en effet la bonne réponse et devrait être la première.
lsrom
0

Puisque j'ai besoin d'ImageView pour ajouter une icône juste pour l'esthétique, j'ai ajouté tools:ignore="ContentDescription" dans chaque ImageView que j'avais dans mon fichier xml.

Je ne reçois plus de messages d'erreur

MikNik
la source