Ricevo un avviso come "[Accessibilità] Attributo contentDescription mancante sull'immagine" per imageview. durante l'utilizzo di Android Lint
Cosa significa?
<string name="none"></string>
e poi ho usatoandroid:contentDescription="@string/none"
Ricevo un avviso come "[Accessibilità] Attributo contentDescription mancante sull'immagine" per imageview. durante l'utilizzo di Android Lint
Cosa significa?
<string name="none"></string>
e poi ho usatoandroid:contentDescription="@string/none"
Risposte:
Risolto questo avviso impostando l'attributo android:contentDescription
per 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.
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"
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" />
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.
Dal momento che è solo un avvertimento puoi sopprimerlo. Vai al layout grafico del tuo XML e fai questo:
Fai clic sul pulsante rosso nell'angolo in alto a destra
Seleziona "Disabilita tipo di problema" (ad esempio)
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"
Vai al Gradle
file (app del modulo), aggiungi sotto il blocco di codice
android {
...
lintOptions {
disable 'ContentDescription'
}
...
}
Niente più avvertimenti! buona programmazione
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"
ContentDescription
necessario 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 app
cartella.
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"