Как устранить предупреждение в android layout.xml: «отсутствует contentDescription» - PullRequest
5 голосов
/ 20 февраля 2012
<ImageView style="@style/LoaderPrevNext.Next" />

используя стили

<style name="LoaderPrevNext">
    <item name="android:layout_width">40dp</item>
    <item name="android:layout_height">80dp</item>
    <item name="android:layout_weight">0</item>
    <item name="android:scaleType">fitXY</item>
</style>

<style name="LoaderPrevNext.Next">
    <item name="android:src">@drawable/next_page</item>
    <item name="android:contentDescription">@string/img_desc_next_page</item>
</style>

раздражает меня предупреждением [Accessibility] Missing contentDescription attribute on image.

Исчезает, если я перемещаю или копирую contentDescription из стиля в тег ImageView, но поскольку src определен в стиле, я бы хотел сохранить их вместе.

Думаю, это просто ошибка SDK, но некоторые могут найти обходной путь ...

Пояснение: у рассматриваемого ImageView действительно есть описание контента, определенное в стиле LoaderPrevNext.Next. Предупреждение ложно. Меня не интересуют идеи о том, как установить описание контента или как их взломать.

Ответы [ 6 ]

6 голосов
/ 20 февраля 2012

In Eclipse Окно-> Настройки-> Android-> Проверка ошибки Lint-> Правая сторона прокрутки вниз до Доступность-> Описание содержимого-> Серьезность-> Выбрать Игнорировать-> Применить-> Да

5 голосов
/ 24 марта 2014

Как подавить предупреждение о доступности Android Отсутствует contentDescription

Оба существующих ответа на этот вопрос технически верны, но я считаю, что есть лучший способ.Первый ответ предлагает отключить все contentDescription предупреждения.Хотя это работает, contentDescription существует по причине, и, возможно, не следует отключать глобально для всего контента.

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

Документация Android для lint обеспечивает лучшее решение, IMO, который представляет собой сочетание предоставления contentDescription для некоторого содержимого и подавления предупреждения lint для другого содержимого:

Обратите внимание, что элементы на экранах приложений являются чисто декоративными и не предоставляют никакого содержимого или включения.пользовательское действие не должно иметь специальных описаний контента.В этом случае просто подавьте предупреждение о lint с помощью атрибута tools:ignore="ContentDescription".

Поэтому для устранения всех предупреждений о lint используйте следующее решение:

  • Define contentDescription в файле макета XML с android:contentDescription="Your description here." для ресурсов, которые предоставляют интересную или полезную информацию для пользователя.И,
  • Добавьте tools:ignore="ContentDescription" к чисто декоративному содержимому или изображениям.
1 голос
/ 03 апреля 2018

К отключить предупреждение о пропущенном описании контента во всем проекте, добавьте это к своему build.gradle

android {
    lintOptions {
        disable 'ContentDescription'
    }
}
1 голос
/ 11 июня 2014

Если вы не хотите отключать / игнорировать предупреждения lint, вы можете определить пустую строку в strings.xml

string.xml:

<string name="empty"></string>

а затем в вашем xml просто установите значение

<ImageView
    android:id="..."
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:contentDescription="@string/empty"/>
0 голосов
/ 11 октября 2017

Почему вы хотите иметь описание изображения в стиле.

Цель стилей - иметь возможность что-то изменить в одном месте, что отражается в нескольких местах.

То же самое относится к ресурсу @string. Просто не помещайте описание изображения в стиле. Оставьте @string. Когда нужно - измените эту строку.

0 голосов
/ 04 ноября 2012

android: id = ...

android: layout_width = ... ...

android: contentDescription = "ваше описаниеприходит сюда. получить из строки xml, если это строка "

/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...