You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jetpack Compose中检测SuggestionChip的长按事件

解决Jetpack Compose SuggestionChip长按事件不生效的问题
  • 核心问题:SuggestionChip自带的onClick参数会拦截点击事件,导致外部修饰符的事件逻辑无法正常触发。正确的处理方式是用combinedClickable统一接管点击和长按逻辑,同时将Chip自带的onClick置空。

  • 正确实现代码示例:

SuggestionChip(
    onClick = {}, // 必须置空,避免抢占事件优先级
    label = { Text("测试建议Chip") },
    modifier = Modifier.combinedClickable(
        onClick = {
            // 处理普通点击逻辑
            println("Chip被点击")
        },
        onLongClick = {
            // 处理长按逻辑
            println("Chip被长按")
        }
    )
)
  • 如果上述方法仍不生效,可尝试用底层的pointerInput手动监听触摸事件:
SuggestionChip(
    onClick = {},
    label = { Text("测试建议Chip") },
    modifier = Modifier.pointerInput(Unit) {
        detectTapGestures(
            onTap = {
                println("普通点击触发")
            },
            onLongPress = {
                println("长按事件触发")
            }
        )
    }
)
  • 避坑提示:
    • 不要用Box包裹Chip后再加combinedClickable,Chip自身的点击区域会和Box的事件区域冲突,导致长按逻辑失效。
    • 确保使用的Compose版本在1.3.0及以上,旧版本的combinedClickable存在兼容性问题。

内容的提问来源于stack exchange,提问作者thebluepandabear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:30:55