Специальные возможности
Compose Multiplatform предоставляет функции, необходимые для соответствия стандартам доступности: семантические свойства, API специальных возможностей и поддержку вспомогательных технологий, включая программы экранного доступа и навигацию с помощью клавиатуры.
Фреймворк позволяет создавать приложения, соответствующие требованиям Европейского акта о доступности (EAA) и Руководства по обеспечению доступности веб-контента (WCAG).
Семантические свойства
Чтобы предоставить контекст таким службам, как специальные возможности, автозаполнение и тестирование, можно определить назначение и роль компонента с помощью семантических свойств.
Семантические свойства — это строительные блоки семантического дерева, представляющего собой упрощённое представление пользовательского интерфейса. Когда вы определяете семантические свойства в компонуемых функциях, они автоматически добавляются в семантическое дерево. Вспомогательные технологии взаимодействуют с приложением, перемещаясь по семантическому дереву, а не по всему дереву пользовательского интерфейса.
Основные семантические свойства для специальных возможностей:
-
contentDescriptionпредоставляет описание нетекстовых или неоднозначных элементов пользовательского интерфейса, таких какIconButtonиFloatingActionButton. Это основной API специальных возможностей, предназначенный для задания текстовой метки, которую озвучивают программы экранного доступа.Modifier.semantics { contentDescription = "Description of the image" } -
roleсообщает службам специальных возможностей функциональный тип компонента пользовательского интерфейса, например кнопку, флажок или изображение. Это помогает программам экранного доступа интерпретировать способы взаимодействия и правильно озвучивать элемент.Modifier.semantics { role = Role.Button } -
stateDescriptionописывает текущее состояние интерактивного элемента пользовательского интерфейса.Modifier.semantics { stateDescription = if (isChecked) "Checked" else "Unchecked" } -
testTagприсваивает уникальный идентификатор компонуемому элементу для тестирования пользовательского интерфейса с помощью фреймворка Espresso на Android или XCUITest на iOS. Также можно использоватьtestTagдля отладки или в отдельных сценариях автоматизации, требующих идентификатор компонента.Modifier.testTag("my_unique_element_id")
Полный список семантических свойств см. в справочнике API Jetpack Compose для SemanticsProperties.
Порядок обхода
По умолчанию программы экранного доступа перемещаются по элементам пользовательского интерфейса в фиксированном порядке, следуя их расположению слева направо и сверху вниз. Однако в сложных макетах программы экранного доступа могут не определить правильный порядок чтения автоматически. Это особенно важно для макетов с контейнерными представлениями, например таблицами и вложенными представлениями, которые поддерживают прокрутку и масштабирование содержащихся в них представлений.
Чтобы обеспечить правильный порядок чтения при прокрутке и перелистывании сложных представлений, задайте семантические свойства обхода. Это также обеспечит правильную навигацию между разными группами обхода с помощью жестов специальных возможностей — перелистывания вверх или вниз.
По умолчанию индекс обхода компонента равен 0f. Чем меньше значение индекса обхода компонента, тем раньше будет прочитано его описание содержимого по сравнению с другими компонентами.
Например, если вы хотите, чтобы программа экранного доступа в первую очередь озвучивала плавающую кнопку действия, задайте для неё индекс обхода -1f:
@Composable
fun FloatingBox() {
Box(
modifier =
Modifier.semantics {
isTraversalGroup = true
// Sets a negative index to prioritize over elements with the default index
traversalIndex = -1f
}
) {
FloatingActionButton(onClick = {}) {
Icon(
imageVector = Icons.Default.Add,
contentDescription = "Icon of floating action button"
)
}
}
}
Дальше
Подробнее о функциях специальных возможностей для iOS:
Тестирование специальных возможностей с помощью фреймворка XCTest
Синхронизация семантического дерева с деревом специальных возможностей iOS (для Compose Multiplatform 1.7.3 и более ранних версий)
Подробнее о функциях специальных возможностей для настольных систем:
Подробные сведения о реализации см. в документации Jetpack Compose.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/compose-accessibility.html