Android Jetpack Compose:如何点击触发Tooltip并按需关闭
实现点击触发的RichTooltipBox
要实现点击Icon一次显示Tooltip、再次点击或点击外部区域关闭的效果,核心是手动控制TooltipState的显示状态,具体修改步骤如下:
- 持有TooltipState实例:将
rememberTooltipState()提取为变量,方便后续手动调用状态控制方法 - 在点击事件中切换状态:根据当前Tooltip的显示状态,调用
show()或hide()方法 - 保留外部点击关闭逻辑:
TooltipBox本身已支持点击外部区域自动关闭Tooltip,无需额外处理
修改后的完整代码:
val tooltipState = rememberTooltipState() TooltipBox( positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), tooltip = { RichTooltip( title = { Text("Smart Cycle") }, text = { Text("If enabled, the cycle will automatically be detected, starting with the highest paycheck") } ) }, state = tooltipState ) { IconButton(onClick = { if (tooltipState.isVisible) { tooltipState.hide() } else { tooltipState.show() } }) { Icon(Icons.Default.Info, contentDescription = "info") } }
关键说明
rememberTooltipState():创建并持有Tooltip的状态实例,包含isVisible状态以及show()/hide()控制方法- 点击事件逻辑:通过判断
isVisible的值来切换Tooltip的显示/隐藏状态,实现点击切换的效果 - 外部点击关闭:
TooltipBox内部已经处理了点击组件外部区域自动隐藏Tooltip的逻辑,无需额外添加手势监听
内容的提问来源于stack exchange,提问作者Luca Christ
相关产品推荐
相关产品推荐

