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

如何修改Jetpack Compose中detectTapGestures的长按超时时间?

修改Jetpack Compose长按触发超时的方法

默认的detectTapGestures使用系统ViewConfiguration的长按超时时间,而该配置的属性是只读的,无法直接修改。你可以通过自定义ViewConfiguration并传入pointerInput的方式覆盖默认超时:

  1. 创建自定义ViewConfiguration实例
    用remember缓存自定义配置,仅覆盖需要修改的longPressTimeoutMillis,其他属性沿用系统默认值:

    val customViewConfig = remember {
        object : ViewConfiguration {
            override val longPressTimeoutMillis: Long = 2000 // 设置为2秒触发长按
            override val doubleTapTimeoutMillis: Long = ViewConfiguration.getDefaultDoubleTapTimeoutMillis()
            override val doubleTapMinTimeMillis: Long = ViewConfiguration.getDefaultDoubleTapMinTimeMillis()
            override val touchSlop: Float = ViewConfiguration.getDefaultTouchSlop()
            override val minimumTouchTargetSize: Int = ViewConfiguration.getDefaultMinimumTouchTargetSize()
            override val tapTimeoutMillis: Long = ViewConfiguration.getDefaultTapTimeoutMillis()
            override val tapSlop: Float = ViewConfiguration.getDefaultTapSlop()
            override val hoverTapTimeoutMillis: Long = ViewConfiguration.getDefaultHoverTapTimeoutMillis()
            override val hoverTapSlop: Float = ViewConfiguration.getDefaultHoverTapSlop()
            override val scaledTouchSlop: Float = ViewConfiguration.getDefaultScaledTouchSlop()
        }
    }
    
  2. 在pointerInput中传入自定义配置
    将自定义的ViewConfiguration作为参数传给pointerInput,内部的detectTapGestures就会使用这个配置的超时时间:

    Box(
        modifier = Modifier
            .size(200.dp)
            .background(Color.Gray)
            .pointerInput(customViewConfig) {
                detectTapGestures(
                    onLongPress = {
                        // 自定义超时后的长按逻辑
                        println("长按触发")
                    }
                )
            }
    ) {
        Text(text = "长按测试")
    }
    

原理:pointerInput的参数会决定作用域内viewConfiguration的实例,传入自定义配置后,手势检测逻辑会读取该配置的longPressTimeoutMillis作为触发阈值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:45:37