Jetpack 为 Button 和 IconButton 编写 onClickLabel

Abh*_*bhi 5 android accessibility android-jetpack-compose

致力于增强我的应用程序的辅助功能。

Docs中,我可以看到CardonClick作为onClickLabelAPI 的一部分。

对于没有 的可组合项onClick,我们可以使用Modifier.clickableor Modifier.semantics

但是ButtonIconButtonFloatingActionButtonTextButtonOutlinedButton
可组合项onClick作为 API 的一部分,但没有onClickLabel.

这按预期工作。但这是编写这段代码的正确方法吗?

IconButton(
    onClick = navigateUp,
    modifier = Modifier.clickable(
        onClickLabel = "Navigate up",
        onClick = {},
    )
) {
    Icon(
        imageVector = Icons.Rounded.ArrowBack,
        contentDescription = stringResource(
            id = R.string.top_app_bar_content_description_navigate_up,
        ),
    )
}
Run Code Online (Sandbox Code Playgroud)

这似乎太令人困惑IconButtononClick。所以我不能完全同意Modifier.clickableModifier.semantics
同样Modifier.clickable也是期待onClick

因此,我有两个onClick用于单个可组合组件,这很容易导致许多难以调试的错误。

变更原因,
读取“双击向上导航”而不是默认的“双击激活”。

PS:
撰写版本 - 1.0.4

Fra*_*esc 3

在这种情况下您不需要,Modifier.clickable因为:

  • IconButton 已经通过其onClicklambda处理点击
  • Icon一个contentDescription可访问字段

所以你需要的就是这个

IconButton(
    onClick = navigateUp,
) {
    Icon(
        imageVector = Icons.Rounded.ArrowBack,
        contentDescription = stringResource(
            id = R.string.top_app_bar_content_description_navigate_up,
        ),
   )
}
Run Code Online (Sandbox Code Playgroud)