236 votes

Attribut contentDescription manquant sur l'image" en XML

Je reçois un avertissement concernant [Accessibilité]Attribut contentDescription manquant sur l'image en éclipse. Cet avertissement apparaît à la ligne 5 (déclarer ImageView ) dans le code XML ci-dessous.

Cela ne provoque aucune erreur lors de la construction et de l'exécution de mon application. Mais je veux vraiment savoir pourquoi je reçois cet avertissement.

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

Veuillez m'aider à ce sujet et merci de votre lecture.

7 votes

La nouvelle suggestion de version ADT ajoute android:contentDescription cet attribut dans imageview juste une suggestion, je pense que vous pouvez ignorer ceci, il ne fait pas l'erreur de compilation, aussi vous pouvez vérifier http://developer.android.com/reference/android/view/View.htm‌​l#attr_android:conte‌​ntDescription

0 votes

Oui, c'est vrai.

280voto

PhatHV Points 3283

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

J'ai résolu cet avertissement en définissant l'attribut Android:contentDescription pour mon ImageView

Android:contentDescription="@string/desc"

Le support d'Android Lint dans ADT 16 lance cet avertissement pour s'assurer que les widgets d'image fournissent un contentDescription

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

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

Ce lien pour l'explication : L'accessibilité, son impact et les ressources de développement

De nombreux utilisateurs d'Android souffrent de handicaps qui les obligent à interagir avec leurs appareils Android de différentes manières. Il s'agit notamment des utilisateurs qui qui présentent des handicaps visuels, physiques ou liés à l'âge qui les empêchent de de voir ou d'utiliser pleinement un écran tactile.

Android fournit des fonctions et des services d'accessibilité pour aider ces utilisateurs à naviguer plus facilement sur leurs appareils, notamment la synthèse vocale, la rétroaction haptique, la navigation à l'aide d'une boule de commande et d'un D-pad qui améliorent leur expérience. Les développeurs d'applications Android peuvent tirer parti de ces services pour rendre leurs applications plus accessibles et aussi créer leurs propres services d'accessibilité. leurs propres services d'accessibilité.

Ce guide est destiné à rendre votre application accessible : Rendre les applications plus accessibles

S'assurer que votre application est accessible à tous les utilisateurs est relativement relativement facile, en particulier lorsque vous utilisez des composants d'interface utilisateur fournis par le framework. Si vous utilisez uniquement ces composants standard pour votre application, quelques étapes suffisent pour garantir l'accessibilité de votre application est accessible :

  1. Étiquettez votre ImageButton , ImageView , EditText , CheckBox et d'autres commandes d'interface à l'aide de l'interface Android:contentDescription attribut.

  2. Faites en sorte que tous les éléments de votre interface utilisateur soient accessibles à l'aide d'un contrôleur directionnel, tel que la boule de commande ou le pavé numérique. tel qu'un trackball ou un D-pad.

  3. Testez votre application en activant les services d'accessibilité tels que TalkBack et Explore by Touch, et essayez d'utiliser votre application en utilisant uniquement les commandes directionnelles.

103 votes

Encore une remarque importante ! Dans ce cas, il semble que l'image soit purement décorative et n'apporte aucune information supplémentaire à l'utilisateur. Ainsi, par exemple, vous ne voudriez pas dire "Image de contact" à l'utilisateur, mais vous pourriez dire "Photo de profil de Bob" si vous ne montrez ce texte nulle part ailleurs. Si une image ne doit pas être annoncée à l'utilisateur, vous pouvez définir Android:contentDescription="@null" et l'avertissement disparaîtra.

1 votes

@alanv : excellent commentaire. C'est bien mieux que de désactiver complètement l'avertissement comme cela est généralement conseillé.

14 votes

En fait, je ne pense pas que Android:contentDescription="@null" soit la meilleure solution. J'utilise tools:ignore="ContentDescription" qui est ce qui est censé être. Assurez-vous d'inclure xmlns:tools=" schémas.Android.com/outils "dans votre mise en page racine.

70voto

Jeroen Points 221

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

0 votes

@Jeroen- Quand j'ai ajouté la description, il est dit : "Couldn't resolve resource @string/loginText"- Pourquoi ?

0 votes

Avez-vous une chaîne loginText dans la chaîne XML ?

1 votes

@JamalZafar créer une chaîne dans string.xml avec le nom loginText

41voto

Sotti Points 1188

Mis à jour :

Comme indiqué dans les commentaires, la définition de la description à null indique que l'image est purement décorative et est comprise comme telle par les lecteurs d'écran comme TalkBack.

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

Pour tous ceux qui cherchent comment éviter l'avertissement :

Je ne pense pas que android:contentDescription="@null" est la meilleure solution.

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

Veillez à inclure xmlns:tools="http://schemas.android.com/tools" dans votre mise en page Racine.

13voto

arekolek Points 1

À l'avenir, pour les éléments graphiques qui sont purement décoratif la meilleure solution est d'utiliser :

android:importantForAccessibility="no"

Cela n'a de sens que si la version minimale de votre SDK est au moins égale à 16, car les appareils utilisant des versions inférieures ignoreront cet attribut.

Si vous devez supporter des versions plus anciennes, vous devriez utiliser (comme d'autres l'ont déjà souligné) :

android:contentDescription="@null"

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

12voto

Mwongera Points 447

Ajouter

tools:ignore="ContentDescription"

à votre image. Assurez-vous que vous avez xmlns:tools="http://schemas.android.com/tools" . dans votre mise en page Racine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X