Метки контента

Метки контента позволяют пользователям с ограниченными возможностями распознавать элементы интерфейса при помощи сервисов специальных возможностей, например программ чтения с экрана.

Если информация передается в графическом виде, метки контента могут содержать текстовое описание элемента или связанного с ним действия.

Без меток контента некоторым пользователям будет сложно определять назначение элементов интерфейса и взаимодействовать с ними.

Реализация

View

Определенные типы представлений (View) в интерфейсе должны содержать метки контента, указывающие на назначение таких представлений или связанные с ними действия.

Как присвоить метку

android:contentDescription

При использовании ImageView, ImageButton, CheckBox или другого представления (View), которое передает информацию в графическом виде, присваивайте метки контента для этого представления с помощью атрибута android:contentDescription.

Некоторые метки контента зависят от информации, доступной только во время выполнения, или от значения представления (View), меняющегося с течением времени. Например, во время прослушивания музыки назначение кнопки "Воспроизвести" меняется на "Приостановить". В этом случае используйте View#setContentDescription(CharSequence contentDescription), чтобы метка контента обновлялась в нужное время.

Как правило, сервис специальных возможностей описывает класс ViewGroup, совмещая метки контента дочерних представлений (View). Чтобы переопределить это правило и добавить собственное описание объекта, а также его неактивных дочерних представлений (View), задайте атрибут contentDescription в классе ViewGroup. При этом вам потребуется включить метки контента дочерних представлений (View) в атрибут contentDescription для ViewGroup.

android:hint

Чтобы указать назначение текстового поля, используйте атрибут android:hint для EditTexts или редактируемых объектов TextViews. Не используйте атрибут android:contentDescription в качестве метки контента для редактируемых представлений (Views).

android:labelFor

Атрибут android:labelFor указывает, что представление (View) должно выполнять функцию метки контента для другого представления (View).

Случаи, в которых не требуются метки контента

Метки контента не следует добавлять в следующих случаях:

  • Текст, обрабатываемый в классе TextView или его подклассах, автоматически становится доступен программам чтения с экрана. При этом дополнительные метки контента не требуются.
  • Изображения не передают информацию в графическом виде или выполняют декоративную функцию. В этом случае задайте значение "@null" для атрибута android:contentDescription или "no" для атрибута android:importantForAccessibility.

Дополнительную информацию о добавлении меток контента можно найти в обучающем курсе для разработчиков Android и руководстве по использованию API.

Compose

Определенные типы компонентов в интерфейсе должны содержать метки контента, указывающие на назначение таких компонентов или связанные с ними действия.

Как присвоить метку

Описания контента

Чтобы присвоить метку контента Image, Icon или другому компоненту низкого уровня, который передает информацию в графическом виде, задайте описание контента.

  • Метка контента может зависеть от информации, доступной во время выполнения, а значение компонента может меняться. Например, во время прослушивания музыки назначение кнопки "Воспроизвести" меняется на "Приостановить".
    • В этом случае используйте отслеживание состояния, чтобы инструмент Compose мог наблюдать изменения в описании контента и перекомпоновать его с новым значением. Подробнее о состоянии и Jetpack Compose
  • В некоторых случаях вам может потребоваться объединить элементы в один фокусируемый элемент, который соединяет между собой метки контента его дочерних элементов. Подробнее о том, как объединять элементы

Параметр метки

Некоторые компоненты, например TextField, поддерживают необязательный параметр метки. Когда метка установлена, элемент показывает компонент, переданный метке. Сервисы специальных возможностей можно использовать для описания компонента.

Случаи, в которых не требуются метки контента

Метки контента не следует добавлять в следующих случаях:

  • Текст, обрабатываемый в классе Text или других компонентах, содержащих Text, автоматически становится доступен программам чтения с экрана.
  • Изображения не передают информацию в графическом виде или выполняют декоративную функцию.
    • В этом случае задайте значение null для параметра contentDescription или Modifier.semantics#contentDescription либо вызовите Modifier#clearAndSetSemantics.

Дизайн

При разработке интерфейса уделите особое внимание меткам графического контента для пользователей с ограниченными возможностями. Метки контента должны соответствовать следующим принципам:

  • кратко и понятно описывать назначение элемента или связанное с ним действие;
  • не включать в себя тип или состояние элемента;
  • указывать не на внешний вид, а на назначение элементов, связанных с действиями;
  • не содержать подробных инструкций по взаимодействию с элементом.

Дополнительная информация приведена в руководстве по внедрению Material Design.

Тестирование

Убедитесь, что в интерфейсе присутствуют все метки контента. Для этого вручную выполните следующие действия:

  1. Включите TalkBack.
  2. Запустите приложение.
  3. С помощью жестов последовательно выделяйте элементы на экране.
  4. Если TalkBack не озвучивает выделенный элемент или определяет его как "Без названия", значит метка контента отсутствует.

Пропущенные метки контента можно выявить в ходе автоматического тестирования. Чтобы проверить приложение на устройстве вручную, воспользуйтесь Сканером доступности. Для автоматического тестирования включите проверку доступности в Espresso и Robolectric.

Поиск
Очистить поле поиска
Закрыть поиск
Главное меню
17625814146913673959
true
Поиск по Справочному центру
true
true
true
true
true
717068
false
false
false