Contenido de Android Lint Advertencia de descripción

130

Recibo una advertencia como "[Accesibilidad] Falta el atributo contentDescription en la imagen" para imageview. mientras usa pelusa de Android

Qué significa eso?

Santhosh Shettigar
fuente
55
Esta es una advertencia tan molesta, especialmente para imágenes que son solo para el estilo
Someone Somewhere
66
Definí esto en strings.xml: <string name="none"></string> y luego uséandroid:contentDescription="@string/none"
Someone Somewhere

Respuestas:

170

Resolvió esta advertencia estableciendo el atributo android:contentDescriptionpara mi ImageView

android:contentDescription="@string/desc"

La compatibilidad con Android Lint en ADT 16 arroja esta advertencia para garantizar que los widgets de imágenes proporcionen una descripción de contenido.

Esto define el texto que describe brevemente el contenido de la vista. Esta propiedad se usa principalmente para accesibilidad. Dado que algunas vistas no tienen representación textual, este atributo se puede utilizar para proporcionarlo.

Los widgets no textuales como ImageViews e ImageButtons deben usar el atributo contentDescription para especificar una descripción textual del widget de modo que los lectores de pantalla y otras herramientas de accesibilidad puedan describir adecuadamente la interfaz de usuario.

Santhosh Shettigar
fuente
44
Puede leer más sobre él y probarlo usted mismo en: android-developers.blogspot.com/2012/04/… y developer.android.com/guide/topics/ui/accessibility/…
desarrollador de Android
49

Deshabilitar las advertencias de Lint fácilmente te meterá en problemas más adelante. Es mejor que solo especifique contentDescription para todas sus ImageViews. Si no necesita una descripción, simplemente use:

android:contentDescription="@null"
Dane White
fuente
38

Otra opción es suprimir la advertencia individualmente:

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

Ejemplo:

<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
fuente
Incorrecto: al agregar herramientas: ignore = "contentDescription" en RelativeLayout condujo al error de compilación "Al atributo le falta el prefijo de espacio de nombres de Android"
G. Kh.
3
Este es un problema de eclipse. Solo limpia tu proyecto. Y asegúrese de que: xmlns: tools = " schemas.android.com/tools " también está incluido.
Gunnar Bernstein
24

Te recomiendo que agregues el contenido Descripción.

android:contentDescription="@string/contentDescriptionXxxx"

Pero, seamos realistas. La mayoría de las personas no mantienen literalmente la accesibilidad. Aún así, con poco esfuerzo, puede implementar algo para ayudar a las personas con discapacidad.

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

.

Lo más importante que el usuario ciego necesitará saber es "¿Dónde está el botón en el que debo hacer clic para continuar?"

Use contentDescriptionAction para cualquier cosa en la que se pueda hacer clic.

use contentDescriptionContent para la imagen con información (gráfico, textAsImage, ...)

use contentDescriptionUserContent para todo el contenido proporcionado por el usuario.

use contentDescription Inútil para todo lo demás.

Cristo
fuente
1
¡Gracias! Siempre es una mejor opción proporcionar esta descripción en lugar de suprimir la advertencia.
Vinicius Paldês
12

Como solo es una advertencia, puede suprimirla. Vaya al diseño gráfico de su XML y haga esto:

  1. Haga clic en el botón rojo de la esquina superior derecha

    ingrese la descripción de la imagen aquí

  2. Seleccione "Deshabilitar tipo de problema" (por ejemplo)

    ingrese la descripción de la imagen aquí

Sergio Carneiro
fuente
44
Es cierto que puede suprimirlo, pero probablemente debería seguir los consejos de la respuesta seleccionada, por el bien de los usuarios que confían en las herramientas de accesibilidad que ofrece Android.
Kyle Falconer
¡¡¡Eso es todo!!! Eso es lo que estaba buscando. Esta respuesta y la respuesta de @Gunnar Bernstein me atraparon.
IronBlossom
3

Si desea suprimir esta advertencia de manera elegante (porque está seguro de que no se necesita accesibilidad para este ImageView en particular), puede usar un atributo especial:

android:importantForAccessibility="no"
Alexander Bernat
fuente
2

Ir al Gradlearchivo (aplicación de módulo), agregar debajo del bloque de código

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

¡No más advertencias! codificación feliz

GianhTran
fuente
codificación feliz, pero tenga en cuenta que esto dañará la accesibilidad para las personas que realmente confían en él
soy un dragón rana
1

Los widgets no textuales necesitan una descripción de contenido de alguna manera para describir textualmente la imagen para que los lectores de pantalla puedan describir la interfaz de usuario. Puede ignorar la propiedad o definir la propiedadxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"

Fokou Franklin
fuente
1

ContentDescriptionnecesario para la accesibilidad de Android. Particularmente para la función de lector de pantalla. Si no admite la accesibilidad de Android, puede ignorarlo con la configuración de Lint .

Así que solo crea lint.xml.

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

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

</lint>

Y ponerlo en la appcarpeta.

ingrese la descripción de la imagen aquí

Yvgen
fuente
1

Para los elementos gráficos que son puramente decorativos, configure sus respectivos atributos Android: contentDescription XML en "@null".

Si su aplicación solo es compatible con dispositivos que ejecutan Android 4.1 (nivel 16 de API) o superior, en su lugar, puede establecer los atributos XML de android: importantForAccessibility de estos elementos en "no"

AnhSang
fuente
android: importantForAccessibilty era exactamente lo que estaba buscando. ¡Gracias!
Hrafn
Esta es de hecho la respuesta correcta y debería ser la mejor.
lsrom
0

Como necesito el ImageView para agregar un ícono solo por estética, agregué tools:ignore="ContentDescription"dentro de cada ImageView que tenía en mi archivo xml.

Ya no recibo ningún mensaje de error

MikNik
fuente