Android Lint contentDescription Warnung

130

Ich erhalte die Warnung "[Eingabehilfen] Fehlendes contentDescription-Attribut für das Bild" für die Bildansicht. während der Verwendung von Android Flusen

Was bedeutet das?

Santhosh Shettigar
quelle
5
Dies ist eine so nervige Warnung - besonders für Bilder, die nur für Flair sind
Jemand irgendwo
6
Ich habe dies in der Datei strings.xml definiert: <string name="none"></string> und dann habe ichandroid:contentDescription="@string/none"
Someone Somewhere

Antworten:

170

Diese Warnung wurde android:contentDescriptionbehoben, indem ein Attribut für meine ImageView festgelegt wurde

android:contentDescription="@string/desc"

Die Unterstützung von Android Lint in ADT 16 gibt diese Warnung aus, um sicherzustellen, dass Bild-Widgets eine Inhaltsbeschreibung bereitstellen.

Dies definiert Text, der den Inhalt der Ansicht kurz beschreibt. Diese Eigenschaft wird hauptsächlich für die Barrierefreiheit verwendet. Da einige Ansichten keine Textdarstellung haben, kann dieses Attribut zum Bereitstellen solcher verwendet werden.

Nicht-Text-Widgets wie ImageViews und ImageButtons sollten das contentDescription-Attribut verwenden, um eine Textbeschreibung des Widgets anzugeben, damit Bildschirmleseprogramme und andere Eingabehilfen die Benutzeroberfläche angemessen beschreiben können.

Santhosh Shettigar
quelle
4
Sie können mehr darüber lesen und es selbst testen, indem Sie zu: android-developers.blogspot.com/2012/04/… und developer.android.com/guide/topics/ui/accessibility/… gehen
android developer
49

Wenn Sie die Flusenwarnungen deaktivieren, können Sie später leicht Probleme bekommen. Es ist besser, nur contentDescription für alle Ihre ImageViews anzugeben. Wenn Sie keine Beschreibung benötigen, verwenden Sie einfach:

android:contentDescription="@null"
Däne Weiß
quelle
38

Eine andere Möglichkeit besteht darin, die Warnung einzeln zu unterdrücken:

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

Beispiel:

<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
quelle
Falsch - Hinzufügen von Tools: ignore = "contentDescription" in RelativeLayout führte zu Kompilierungsfehler "Attribut fehlt das Android-Namespace-Präfix"
G. Kh.
3
Dies ist ein Eclipse-Problem. Reinigen Sie einfach Ihr Projekt. Und stellen Sie sicher, dass: xmlns: tools = " schemas.android.com/tools " ebenfalls enthalten ist!
Gunnar Bernstein
24

Ich empfehle Ihnen, die contentDescription hinzuzufügen.

android:contentDescription="@string/contentDescriptionXxxx"

aber lasst uns realistisch sein. Die meisten Menschen halten sich nicht an die Barrierefreiheit. Dennoch mit wenig Aufwand können Sie etwas zu helfen Menschen mit Behinderung umzusetzen.

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

.

Das Wichtigste, was der blinde Benutzer wissen muss, ist "Wo ist die Schaltfläche, auf die ich klicken muss, um fortzufahren?"

Verwenden Sie contentDescriptionAction für alles, was anklickbar ist.

Verwenden Sie contentDescriptionContent für Bilder mit Informationen (Grafik, TextAsImage, ...).

Verwenden Sie contentDescriptionUserContent für alle vom Benutzer bereitgestellten Inhalte.

Verwenden Sie für den Rest contentDescriptionUseless.

Christus
quelle
1
Vielen Dank! Es ist immer die beste Wahl, diese Beschreibung bereitzustellen, um Warnungen zu unterdrücken.
Vinicius Paldês
12

Da es sich nur um eine Warnung handelt, können Sie diese unterdrücken. Gehen Sie zum grafischen Layout Ihres XML und gehen Sie folgendermaßen vor:

  1. Klicken Sie auf die rote Schaltfläche in der rechten oberen Ecke

    Geben Sie hier die Bildbeschreibung ein

  2. Wählen Sie "Problemtyp deaktivieren" (zum Beispiel)

    Geben Sie hier die Bildbeschreibung ein

Sergio Carneiro
quelle
4
Sie können es zwar unterdrücken, aber Sie sollten wahrscheinlich den Ratschlägen der ausgewählten Antwort folgen, um den Benutzern zu helfen, die sich auf die von Android bereitgestellten Eingabehilfen verlassen.
Kyle Falconer
Das ist es!!! das habe ich gesucht. Diese Antwort und die Antwort von @Gunnar Bernstein haben mich erwischt.
IronBlossom
3

Wenn Sie diese Warnung auf elegante Weise unterdrücken möchten (da Sie sicher sind, dass für diese bestimmte ImageView keine Barrierefreiheit erforderlich ist), können Sie ein spezielles Attribut verwenden:

android:importantForAccessibility="no"
Alexander Bernat
quelle
2

Gehen Sie zur GradleDatei (Modul-App) und fügen Sie den folgenden Codeblock hinzu

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

Keine Warnung mehr! fröhliche Codierung

GianhTran
quelle
Viel Spaß beim Codieren, aber beachten Sie, dass dies die Zugänglichkeit für Menschen beeinträchtigt, die sich tatsächlich darauf verlassen
ich bin ein Froschdrache
1

Nicht-Text-Widgets benötigen in gewisser Weise eine Inhaltsbeschreibung, um das Bild in Textform zu beschreiben, damit Bildschirmleser die Benutzeroberfläche beschreiben können. Sie können die Eigenschaft ignorieren oder die Eigenschaft definierenxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"

Fokou Franklin
quelle
1

ContentDescriptionbenötigt für die Android-Erreichbarkeit. Besonders für die Bildschirmlesefunktion. Wenn Sie die Android-Barrierefreiheit nicht unterstützen, können Sie sie mit Setup Lint ignorieren .

Also einfach erschaffen lint.xml.

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

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

</lint>

Und legen Sie es in den appOrdner.

Geben Sie hier die Bildbeschreibung ein

Yvgen
quelle
1

Setzen Sie für grafische Elemente, die nur dekorativ sind, die entsprechenden XML-Attribute für android: contentDescription auf "@null".

Wenn Ihre App nur Geräte unterstützt, auf denen Android 4.1 (API-Level 16) oder höher ausgeführt wird, können Sie stattdessen die XML-Attribute android: importantForAccessibility dieser Elemente auf "no" setzen.

AnhSang
quelle
android: wichtigForAccessibilty war genau das, wonach ich gesucht habe. Danke dir!
Hrafn
Dies ist in der Tat die richtige Antwort und sollte die beste sein.
Ab dem
0

Da ich die ImageView brauche, um ein Symbol nur aus ästhetischen Gründen hinzuzufügen, habe ich sie tools:ignore="ContentDescription"in jeder ImageView hinzugefügt, die ich in meiner XML-Datei hatte.

Ich erhalte keine Fehlermeldungen mehr

MikNik
quelle