Вміст Android LintОпис попередження


130

Я отримую попередження як "[Доступність] Відсутній атрибут contentDescription on image" для перегляду зображень. під час використання андроїд-линту

Що це означає?


5
це таке набридливе попередження - особливо для зображень, які лише для чуття
Хтось десь

6
Я визначив це у strings.xml: <string name="none"></string> і тоді я використавandroid:contentDescription="@string/none"
Хтось десь

Відповіді:


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/…
андроїд розробник

49

Якщо вимкнути попередження Lint, згодом ви легко увійдете в проблеми. Вам краще просто вказати contentDescription для всіх своїх зображень. Якщо вам не потрібен опис, просто використовуйте:

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 " також включений!
Гуннар Бернштейн

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.
Кайл Фальконер

Це воно!!! ось що я шукав. Ця відповідь та відповідь @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

Для графічних елементів, які мають суто декоративний характер, встановіть для атрибутів андроїд: contentDescription XML значення "@null".

Якщо ваш додаток підтримує лише пристрої з ОС Android 4.1 (API рівня 16) або вище, ви можете замість атрибутів андроїд цих елементів: важливих атрибутів XML встановити значення "ні"


android: важливийForAccessibilty був саме тим, що я шукав. Дякую!
Графн

Це дійсно правильна відповідь, і вона повинна бути першою.
lsrom

0

Оскільки мені потрібен ImageView, щоб додати значок лише для естетики, яку я додав tools:ignore="ContentDescription" у кожен ImageView, який я мав у своєму xml-файлі.

Я більше не отримую жодних повідомлень про помилки

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.