jetpack compose 中是否有
announceForAccessibility
的替代方案,它会自动宣布事件的文本。
announceForAccessibility
是一种极端措施:
注意:该API生成的事件不带语义,仅适用于特殊情况。应用程序通常可以通过准确提供其 UI 语义来实现正确的可访问性行为。他们不需要具体说明向用户宣布的具体内容。
...
使用 View#setAccessibilityLiveRegion(int) 通知用户用户界面中关键视图的更改。这些仍应谨慎使用,因为每次更新视图时它们可能会生成公告。
在大多数情况下,您可以在视图上使用
liveRegion
属性。来自文档:
实时区域向辅助服务指示,它们应自动通知用户有关节点内容描述或文本、或节点子节点的内容描述或文本(如果适用)的更改。
Text(text = "Some text view",
modifier = Modifier.semantics {
liveRegion = LiveRegionMode.Assertive
}
)
实时区域的问题是,只有文本在屏幕上可见时,它才会宣布,否则它将被忽略。另一种方法是检索视图并使用announceForAccessibility 本身。
val localView = LocalView.current
localView.announceForAccessibility("your text to be announced")