Spec-Zone.ru › Kotlin 2

Специальные возможности

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 и более ранних версий)

Подробнее о функциях специальных возможностей для настольных систем:

  • Включение специальных возможностей в Windows

  • Тестирование приложения с помощью инструментов macOS и Windows

Подробные сведения о реализации см. в документации Jetpack Compose.

3 июля 2025 г.
Тесты локализацииИнтеграция с фреймворком SwiftUI

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API