我正试图在Jetpack构图中的Column上检测到一个新闻手势。
Column(
modifier = Modifier
.pointerInput(Unit) {
detectTapGestures(
onPress = {
Log.d("OnPress", "I've been pressed")
},
onTap = {
Log.d("OnPress", "I've been tapped")
},
onDoubleTap = {
Log.d("OnPress", "Got double tapped")
},
onLongPress = {
Log.d("OnPress", "Long pressed")
}
)
}
)然而,所有的日志都不起作用。
我看到InteractionSource有一种收集组件是否按下/聚焦等信息的方法。https://developer.android.com/jetpack/compose/handling-interaction#interaction-state
但我不能给我的Column一个交互源作为参数。
那么如何在我的Column上检测新闻呢?
发布于 2022-10-17 06:29:40
如果两个修饰符、clickable和pointerInput都设置在同一个可组合上,则将使用Modifier链中的稍后的one。
modifier = Modifier
.pointerInput(Unit) {
//
}
.clickable { Log.d("OnClick", "Click") }如果clickable()在pointerInput之后出现,那么所有的手势onPress、onTap、onDoubleTap和onLongPress都将被忽略,clickable()将被调用。
因此:
D/OnClick: Click相反:
modifier = Modifier
.clickable { Log.d("OnClick", "Click") }
.pointerInput(Unit){
//your code
} 因此:
E/OnPress: I've been pressed
E/OnPress: I've been tapped您还可以使用侦听单个、双和长的单击。
Column(
modifier = Modifier
.combinedClickable(
onLongClick = { Log.d("OnClick", "Long click") },
onDoubleClick = { Log.d("OnClick", "Double click")},
onClick = { Log.d("OnClick", "Click")}
)
)https://stackoverflow.com/questions/74092683
复制相似问题