![](/img/trans.png)
[英]How to hdisplay an IconButton that is hidden on button click using Jetpack Compose?
[英]Jetpack compose onClickLabel for Button and IconButton
致力于我的应用程序的可访问性增强。
从Docs中,我可以看到Card
具有onClick
和onClickLabel
作为 API 的一部分。
对于没有onClick
的可组合项,我们可以使用Modifier.clickable
或Modifier.semantics
。
但是Button
、 IconButton
、 FloatingActionButton
、 TextButton
和OutlinedButton
呢?
具有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,
),
)
}
这似乎太混乱了,因为IconButton
期望onClick
。 所以我不能 go 完全Modifier.clickable
或Modifier.semantics
。
同样, Modifier.clickable
也需要onClick
。
因此,我有两个onClick
用于单个可组合组件,这很容易导致很多难以调试的错误。
改变的原因,
阅读“双击向上导航”而不是默认的“双击激活”。
附言:
撰写版本 - 1.0.4
在这种情况下您不需要Modifier.clickable
,因为:
onClick
lambda 处理点击Icon
有一个用于辅助功能的contentDescription
字段所以你只需要这个
IconButton(
onClick = navigateUp,
) {
Icon(
imageVector = Icons.Rounded.ArrowBack,
contentDescription = stringResource(
id = R.string.top_app_bar_content_description_navigate_up,
),
)
}
它似乎不是最漂亮的解决方案,但我最终做了:
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
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.