首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetpack为Button和IconButton编写IconButton

Jetpack为Button和IconButton编写IconButton
EN

Stack Overflow用户
提问于 2021-10-22 22:38:51
回答 2查看 1.8K关注 0票数 1

致力于增强我的应用程序的可访问性。

文档中,我可以看到CardonClickonClickLabel作为API的一部分。

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

但是ButtonIconButtonFloatingActionButtonTextButtonOutlinedButton呢?

可组合的,它将onClick作为API的一部分,但没有onClickLabel

这如预期的那样起作用。但是,这是编写代码的正确方式吗?

代码语言:javascript
复制
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,
        ),
    )
}

这似乎太令人困惑了,因为IconButton期望onClick。所以我不能完全使用Modifier.clickableModifier.semantics

类似地,Modifier.clickable也期望onClick

因此,对于一个可组合的组件,我有两个onClick,这很容易导致很多很难调试的bug。

更改的原因,

若要阅读“双击以向上导航”,而不是默认的“双击以激活”,请阅读。

P.S:

撰写版本- 1.0.4

EN

回答 2

Stack Overflow用户

发布于 2021-10-22 23:22:33

在此场景中不需要Modifier.clickable,因为:

  • IconButton已经通过它的onClick lambda处理单击。
  • Icon有一个可访问性的contentDescription字段。

所以你需要的就是这个

代码语言:javascript
复制
IconButton(
    onClick = navigateUp,
) {
    Icon(
        imageVector = Icons.Rounded.ArrowBack,
        contentDescription = stringResource(
            id = R.string.top_app_bar_content_description_navigate_up,
        ),
   )
}
票数 1
EN

Stack Overflow用户

发布于 2022-04-26 17:38:56

这似乎不是最漂亮的解决方案,但我最终做到了:

代码语言:javascript
复制
      IconButton(
        modifier = Modifier.size(40.dp).clearAndSetSemantics {
            this.onClick(label = closeLabelDescription, action = null)
            this.contentDescription = closeDescription
            this.role = Role.Button
        },
        onClick = onClickClose,
    ) {
        Icon(
            painter = painterResource(R.drawable.ic_close),
            tint = RiotWhite,
            contentDescription = null
        )
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69683733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档