Содержание 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'
    }
    ...
}

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

GianhTran
источник
счастливого кодирования, но учтите, что это повредит доступности для людей, которые на самом деле полагаются на него
я дракон-лягушка
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папку.

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

Yvgen
источник
1

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

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

AnhSang
источник
android: importantForAccessibilty было именно тем, что я искал. Спасибо!
Hrafn
Это действительно правильный ответ, и он должен быть первым.
0

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

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

MikNik
источник