Kotlin Multiplatform Development Help

对桌面端无障碍功能的支持

Compose Multiplatform 基于 Jetpack Compose 构建,使大多数无障碍功能能在所有平台的通用代码中使用。当前桌面端的无障碍支持状态如下:

平台

无障碍支持状态

MacOS

完全支持

Windows

通过 Java Access Bridge 提供支持

Linux

暂不支持

在 Windows 上启用无障碍功能

Windows 的无障碍功能通过默认禁用的 Java Access Bridge 提供。要为 Windows 开发无障碍功能,请使用以下命令启用 Java Access Bridge:

%JAVA_HOME%\bin\jabswitch.exe /enable

要创建包含无障碍功能的原生分发版本,请使用 modules DSL 方法添加 jdk.accessibility 模块:

compose.desktop { application { nativeDistributions { modules("jdk.accessibility") } } }

示例:带语义规则的自定义按钮

我们创建一个带有自定义按钮的简单应用,并为屏幕阅读工具指定说明文本。启用屏幕阅读器后,您将听到按钮描述中的"点击增加数值"文本:

import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.Text import androidx.compose.runtime.* import androidx.compose.ui.* import androidx.compose.ui.graphics.Color import androidx.compose.ui.semantics.* import androidx.compose.ui.unit.* import androidx.compose.ui.window.* fun main() = singleWindowApplication( title = "Custom Button", state = WindowState(size = DpSize(300.dp, 200.dp)) ) { var count by remember { mutableStateOf(0) } Box(modifier = Modifier.padding(50.dp)) { Box(modifier = Modifier .background(Color.LightGray) .fillMaxSize() .clickable { count += 1 } // 使用内容中的文本 .semantics(mergeDescendants = true) { // 指定 UI 元素类型 role = Role.Button // 为按钮添加帮助文本 contentDescription = "点击增加数值" } ) { val text = when (count) { 0 -> "点击我!" 1 -> "已点击" else -> "已点击 $count 次" } Text(text, modifier = Modifier.align(Alignment.Center), fontSize = 24.sp) } } }

要在 macOS 上测试应用程序元素的无障碍信息,您可以使用 Accessibility InspectorXcode | Open Developer Tool | Accessibility Inspector):

macOS 上的无障碍检查器

在 Windows 上,您可以使用 JAWS 中的显示语音历史记录功能或 NVDA 中的语音查看器

Windows 上的无障碍功能

更多示例请参阅 Jetpack Compose 无障碍功能指南

下一步?

探索关于其他桌面组件的教程。

22 四月 2025