小编gau*_*nte的帖子

Jetpack Compose 指针输入检测TapGestures 设置长按超时?

要在按钮或可组合项上实现长按功能,通常的方法是使用修饰符指针输入中检测到的点击手势

该代码看起来非常简单并且有效。

Box(modifier = modifier.pointerInput(Unit) {

    detectTapGestures(
        onPress = {
            //Do something
        },
        onDoubleTap = {
           
        },
        onLongPress = {
            onLongClick()
        },
        onTap = {

        }
    )
}
Run Code Online (Sandbox Code Playgroud)

但我需要的是在检测到长按事件之前修改超时(以毫秒为单位)(如果按下框的时间为 tomeoutMillisec,则触发长按事件)

pointerInput 作用域具有“val viewConfiguration”(ViewConfiguration 是一个接口),其中包含 val“longPressTimeoutMillis”。但我无法重新分配这些值(不是 longPressTimeoutMillis,也不能重新分配类 viewConfiguration),因为它们是 val 而不是 var

Box(modifier = modifier.pointerInput(Unit) {

    //this gives an error
    this.viewConfiguration.longPressTimeoutMillis  = 200L
    
    detectTapGestures(
        onPress = {
 
        },
        onDoubleTap = {
            
        },
        onLongPress = {
            onLongClick()
        },
        onTap = {

        }
    )
},
  
Run Code Online (Sandbox Code Playgroud)

有人知道该怎么做吗?

android long-click gesture android-jetpack-compose

2
推荐指数
1
解决办法
1721
查看次数