Contenuto Android Lint Avviso di descrizione


130

Ricevo un avviso come "[Accessibilità] Attributo contentDescription mancante sull'immagine" per imageview. durante l'utilizzo di Android Lint

Cosa significa?


5
questo è un avvertimento così fastidioso - specialmente per le immagini che sono solo per gusto
Someone Somewhere

6
L'ho definito in strings.xml: <string name="none"></string> e poi ho usatoandroid:contentDescription="@string/none"
Someone Somewhere il

Risposte:


170

Risolto questo avviso impostando l'attributo android:contentDescriptionper il mio ImageView

android:contentDescription="@string/desc"

Il supporto Android Lint in ADT 16 genera questo avviso per garantire che i widget di immagini forniscano una descrizione dei contenuti.

Questo definisce il testo che descrive brevemente il contenuto della vista. Questa proprietà viene utilizzata principalmente per l'accessibilità. Poiché alcune viste non hanno una rappresentazione testuale, questo attributo può essere utilizzato per fornire tale.

I widget non testuali come ImageViews e ImageButtons dovrebbero usare l'attributo contentDescription per specificare una descrizione testuale del widget in modo tale che gli screen reader e altri strumenti di accessibilità possano descrivere adeguatamente l'interfaccia utente.



49

La disabilitazione degli avvisi di Lint ti porterà facilmente nei guai in seguito. Stai meglio semplicemente specificando contentDescription per tutte le tue ImageView. Se non hai bisogno di una descrizione, usa semplicemente:

android:contentDescription="@null"

38

Un'altra opzione è sopprimere l'avviso singolarmente:

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

Esempio:

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

Errato - aggiunta di strumenti: ignore = "contentDescription" in RelativeLayout ha portato all'errore di compilazione "Nell'attributo manca il prefisso dello spazio dei nomi Android"
G. Kh.

3
Questo è un problema di eclissi. Pulisci il tuo progetto. E assicurati che: xmlns: tools = " schemas.android.com/tools " sia anche incluso!
Gunnar Bernstein,

24

Ti consiglio di aggiungere contentDescription.

android:contentDescription="@string/contentDescriptionXxxx"

ma, siamo realistici. Molte persone non mantengono letteralmente l'accessibilità. Tuttavia, con un piccolo sforzo, puoi implementare qualcosa per aiutare le persone con disabilità.

<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 cosa più importante che l'utente cieco dovrà sapere è "Dov'è il pulsante che devo fare clic per continuare"

Usa contentDescriptionAction per qualsiasi cosa selezionabile.

usa contentDescriptionContent per l'immagine con informazioni (grafico, textAsImage, ...)

utilizzare contentDescriptionUserContent per tutto il contenuto fornito dall'utente.

usa contentDescriptionUseless per tutto il resto.


1
Grazie! È sempre la scelta migliore per fornire questa descrizione invece di sopprimere l'avvertimento.
Vinicius Paldês,

12

Dal momento che è solo un avvertimento puoi sopprimerlo. Vai al layout grafico del tuo XML e fai questo:

  1. Fai clic sul pulsante rosso nell'angolo in alto a destra

    inserisci qui la descrizione dell'immagine

  2. Seleziona "Disabilita tipo di problema" (ad esempio)

    inserisci qui la descrizione dell'immagine


4
È vero, puoi sopprimerlo, ma probabilmente dovresti seguire il consiglio della risposta selezionata, per il bene degli utenti che si affidano agli strumenti di accessibilità forniti da Android.
Kyle Falconer,

Questo è!!! questo è quello che stavo cercando. Questa risposta e la risposta di @Gunnar Bernstein mi hanno procurato.
IronBlossom,

3

Se si desidera eliminare questo avviso in modo elegante (poiché si è certi che l'accessibilità non è necessaria per questo particolare ImageView), è possibile utilizzare l'attributo speciale:

android:importantForAccessibility="no"

2

Vai al Gradlefile (app del modulo), aggiungi sotto il blocco di codice

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

Niente più avvertimenti! buona programmazione


buon codice, ma nota che questo danneggerà l'accessibilità per le persone che si affidano davvero a questo problema
Sono un drago rana

1

I widget non testuali hanno bisogno di una descrizione del contenuto in qualche modo per descrivere testualmente l'immagine in modo che gli schermi siano in grado di descrivere l'interfaccia utente. È possibile ignorare la proprietà o definire la proprietàxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"


1

ContentDescriptionnecessario per l'accessibilità Android. Soprattutto per la funzione di lettura dello schermo. Se non si supporta l'accessibilità Android, è possibile ignorarlo con l'installazione di Lint .

Quindi basta creare lint.xml.

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

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

</lint>

E mettilo nella appcartella.

inserisci qui la descrizione dell'immagine


1

Per gli elementi grafici puramente decorativi, imposta i rispettivi attributi android: contentDescription XML su "@null".

Se la tua app supporta solo dispositivi che eseguono Android 4.1 (livello API 16) o superiore, puoi invece impostare gli elementi di Android di questi elementi: importantForAccessibility XML su "no"


android: importantForAccessibilty era esattamente quello che stavo cercando. Grazie!
Hrafn,

Questa è davvero la risposta corretta e dovrebbe essere la migliore.
dal

0

Dal momento che ho bisogno di ImageView per aggiungere un'icona solo per l'estetica che ho aggiunto tools:ignore="ContentDescription" all'interno di ogni ImageView che avevo nel mio file XML.

Non ricevo più messaggi di errore

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.