web-dev-qa-db-fra.com

"Attribut contentDescription manquant sur l'image" en XML

Je reçois un avertissement concernant [Accessibilité] Attribut contentDescription manquant sur image dans Eclipse. Cet avertissement s'affiche à la ligne 5 (declare ImageView) dans le code XML ci-dessous.

Cela ne fait aucune erreur lors de la création et de l’exécution de mon application. Mais je veux vraiment savoir pourquoi je reçois cet avertissement.

Ceci est mon fichier 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>

S'il vous plaît aidez-moi à ce sujet et merci pour votre lecture.

192
PhatHV

Suivez ce lien pour trouver une solution: Avertissement Android Lint contentDescription

Résolution de cet avertissement en définissant l'attribut Android: contentDescription pour mon ImageView

Android: contentDescription = "@ string/desc"

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

Ceci définit un texte décrivant brièvement le contenu de la vue. Cette propriété est principalement utilisée pour l'accessibilité. Certaines vues n’ayant pas de représentation textuelle, cet attribut peut être utilisé pour en fournir une.

Les widgets non textuels tels que 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.

Ce lien d'explication: Ressources d'accessibilité, d'impact et de développement

De nombreux utilisateurs de Android ont un handicap qui les oblige à interagir avec leurs appareils Android de différentes manières. Ceux-ci incluent les utilisateurs ayant des handicaps visuels, physiques ou liés à l'âge qui les empêchent de voir ou d'utiliser complètement un écran tactile.

Android fournit des fonctionnalités et des services d'accessibilité pour aider ces utilisateurs à naviguer plus facilement dans leurs appareils, notamment la synthèse vocale, les retours haptiques, la boule de commande et la navigation par D-pad qui enrichissent leur expérience. Android les développeurs d'applications peuvent tirer parti de ces services pour rendre leurs applications plus accessibles et créer leurs propres services d'accessibilité.

Ce guide vous permet de rendre votre application accessible: Rendre les applications plus accessibles

Il est relativement facile de rendre votre application accessible à tous les utilisateurs, en particulier lorsque vous utilisez des composants d'interface utilisateur fournis par la structure. Si vous utilisez uniquement ces composants standard pour votre application, quelques étapes suffisent pour vous assurer que votre application est accessible:

  1. Étiquetez votre ImageButton , ImageView , EditText , CheckBox et d'autres contrôles d'interface utilisateur à l'aide de Android: attribut contentDescription .

  2. Rendez tous les éléments de votre interface utilisateur accessibles avec un contrôleur directionnel, tel qu'une boule de commande ou un D-pad.

  3. Testez votre application en activant des services d'accessibilité tels que TalkBack et Explore by Touch, puis essayez d'utiliser votre application à l'aide de commandes uniquement directionnelles.

258
PhatHV

Ajoutez Android:contentDescription="@string/description" (statique ou dynamique) à votre ImageView. Veuillez ne pas ignorer ni filtrer le message, car il est utile pour les personnes utilisant des méthodes de saisie alternatives en raison de leur handicap (comme TalkBack, Tecla Access Shield, etc.).

64
Jeroen

Mis à jour:

Comme indiqué dans les commentaires, définir la description sur null indique que l'image est purement décorative et est comprise par les lecteurs d'écran tels que TalkBack.

Ancienne réponse, je ne supporte plus cette réponse:

Pour toutes les personnes qui cherchent comment éviter l'avertissement:

Je ne pense pas que Android:contentDescription="@null" soit la meilleure solution.

J'utilise tools:ignore="ContentDescription" c'est ce qui est censé être. 

Assurez-vous d'inclure xmlns:tools="http://schemas.Android.com/tools" dans votre mise en page racine.

31
Sotti

L’avertissement est en effet gênant et, dans la plupart des cas (aucun!), Aucune description du contenu n’est nécessaire pour divers ImageViews décoratifs. La façon la plus radicale de résoudre le problème consiste simplement à dire à Lint d’ignorer cette vérification. Dans Eclipse, accédez à "Vérification des erreurs Android/Charpie" dans Préférences, recherchez "contentDescription" (il figure dans le groupe "Accessibilité") et définissez l'option "Gravité:" sur Ignorer.

9
AlexR

Si vous vous en fichez, faites ceci:

    Android:contentDescription="@null"

Bien que je conseille les solutions acceptées, c’est un hack:

9
alap

Ajouter 

tools:ignore="ContentDescription"

à votre image. Assurez-vous d'avoir xmlns:tools="http://schemas.Android.com/tools" . dans votre mise en page racine.

7
Mwongera

A l'avenir, pour les éléments graphiques purement décoratifs, la meilleure solution consiste à utiliser:

Android:importantForAccessibility="no"

Cela a du sens si votre version min du SDK est au moins de 16, car les appareils exécutant des versions inférieures ignorent cet attribut.

Si vous êtes bloqué par des versions plus anciennes, vous devriez utiliser (comme d'autres déjà souligné):

Android:contentDescription="@null"

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

0
arekolek