Содержание Android LintОписание предупреждения


130

Я получаю предупреждение: «[Доступность] Отсутствует атрибут contentDescription на изображении» для просмотра изображения. при использовании Android lint

Что это значит?


5
это такое раздражающее предупреждение - особенно для изображений, которые предназначены только для чутья
Someone Somewhere

6
Я определил это в strings.xml: <string name="none"></string> а затем использовалandroid:contentDescription="@string/none"
Someone Somewhere

Ответы:


170

Устранено это предупреждение, установив атрибут android:contentDescriptionдля моего ImageView

android:contentDescription="@string/desc"

Поддержка Android Lint в ADT 16 выдает это предупреждение, чтобы убедиться, что виджеты изображений предоставляют описание contentDescription.

Это определяет текст, который кратко описывает содержимое представления. Это свойство используется в основном для доступности. Поскольку некоторые представления не имеют текстового представления, этот атрибут можно использовать для предоставления такого.

Нетекстовые виджеты, такие как ImageViews и ImageButtons, должны использовать атрибут contentDescription, чтобы указать текстовое описание виджета, чтобы программы чтения с экрана и другие инструменты доступности могли адекватно описывать пользовательский интерфейс.


4
вы можете узнать об этом больше и протестировать его самостоятельно, перейдя по адресу : android-developers.blogspot.com/2012/04/… и developer.android.com/guide/topics/ui/accessibility/…
разработчик Android,

49

Отключение предупреждений о Lint может впоследствии легко вызвать у вас проблемы. Вам лучше просто указать contentDescription для всех ваших ImageView. Если вам не нужно описание, просто используйте:

android:contentDescription="@null"

38

Другой вариант - подавить предупреждение по отдельности:

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

Пример:

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

Неправильно - добавление инструментов: ignore = "contentDescription" в RelativeLayout привело к ошибке компиляции «Атрибут отсутствует префикс пространства имен Android»
Г. Х.

3
Это проблема затмения. Просто очистите свой проект. И убедитесь, что: xmlns: tools = " schemas.android.com/tools " также включен!
Gunnar Bernstein

24

Рекомендую добавить описание contentDescription.

android:contentDescription="@string/contentDescriptionXxxx"

но давайте будем реалистами. Большинство людей не поддерживают буквальное значение доступности. Тем не менее, без особых усилий можно реализовать что-нибудь, чтобы помочь людям с ограниченными возможностями.

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

,

Самая важная вещь, которую нужно знать слепому пользователю, - это «Где находится кнопка, которую мне нужно нажать, чтобы продолжить».

Используйте contentDescriptionAction для всего, что можно щелкнуть.

используйте contentDescriptionContent для изображения с информацией (график, textAsImage, ...)

используйте contentDescriptionUserContent для всего предоставленного пользователем контента.

для всего остального используйте contentDescriptionUseless.


1
Спасибо! Лучше всего предоставить это описание вместо подавления предупреждения.
Винисиус Палдес,

12

Поскольку это всего лишь предупреждение, вы можете его подавить. Перейдите в графический макет вашего XML и сделайте следующее:

  1. Нажмите красную кнопку в правом верхнем углу

    введите описание изображения здесь

  2. Выберите «Отключить тип проблемы» (например)

    введите описание изображения здесь


4
Конечно, вы можете подавить его, но вам, вероятно, следует последовать совету выбранного ответа ради пользователей, которые полагаются на инструменты доступности, которые предоставляет Android.
Kyle Falconer

Это оно!!! вот что я искал. Этот ответ и ответ @Gunnar Bernstein меня достали.
IronBlossom

3

Если вы хотите элегантно подавить это предупреждение (поскольку вы уверены, что специальные возможности не нужны для этого конкретного ImageView), вы можете использовать специальный атрибут:

android:importantForAccessibility="no"

2

Перейдите в Gradleфайл (приложение модуля), добавьте ниже блок кода

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

Больше никаких предупреждений! счастливое кодирование


счастливого кодирования, но учтите, что это повредит доступности для людей, которые на самом деле полагаются на него
я дракон-лягушка

1

Нетекстуальные виджеты нуждаются в описании контента, чтобы текстуально описать изображение, чтобы средства чтения с экрана могли описывать пользовательский интерфейс. Вы можете игнорировать свойство или определить свойствоxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"


1

ContentDescriptionнеобходимо для доступности Android. В частности, для функции чтения с экрана. Если вы не поддерживаете специальные возможности Android, вы можете проигнорировать это с помощью настройки Lint .

Так что просто творите lint.xml.

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

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

</lint>

И положил в appпапку.

введите описание изображения здесь


1

Для чисто декоративных графических элементов установите для соответствующих XML-атрибутов android: contentDescription значение «@null».

Если ваше приложение поддерживает только устройства под управлением Android 4.1 (уровень API 16) или выше, вы можете вместо этого установить для XML-атрибутов android: importantForAccessibility этих элементов значение «no».


android: importantForAccessibilty было именно тем, что я искал. Спасибо!
Hrafn

Это действительно правильный ответ, и он должен быть первым.

0

Поскольку мне нужно, чтобы ImageView добавил значок только для эстетики, я добавил tools:ignore="ContentDescription" в каждый ImageView, который у меня был в моем XML-файле.

Я больше не получаю сообщений об ошибках

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.