App/Android
[Compose] longclick + longclick 안 될 때
공부하곰
2024. 10. 14. 12:50
728x90
반응형
그냥 클릭했을 때 동작 - 길게 클릭했을 때 동작 구분 예시
참고한 사이트: https://stackoverflow.com/questions/65835642/button-long-press-listener-in-android-jetpack-compose
modifier = Modifier.clickable(
onClick = {
Timber.i("Clicked: monitoringMode(true)")
},
onLongClick = {
Timber.i("Long clicked: monitoringMode(false)")
}
)
새 프로젝트 하는데 이게 안 통함.
dependencies {
implementation "androidx.compose.ui:ui:<version>"
implementation "androidx.compose.material3:material3:<version>"
// ... 다른 Compose 종속성
}
build.gradle 파일에서 사용 중인 Compose의 버전을 확인 → 1.0.0 이상의 버전에서는 onLongClick이 지원됩니다.
라는데 현재 내 버전은 훨씬 그 이상. 그래서인지 아무튼 안 됨.
아무튼 onLongClick 안 될 때 대체 방법은 Modifier.pointerInput을 사용하는 것이다.
예시)
import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.ui.input.pointer.pointerInput
@Composable
fun LongClickEx() {
Text(
text = "text",
modifier = Modifier.pointerInput(Unit) {
detectTapGestures(
onTap = {
Timber.i("Clicked")
},
onLongPress = {
Timber.i("Long pressed")
}
)
}
)
}
- 이 코드에서는 detectTapGestures를 사용하여 클릭 및 길게 클릭을 감지.
- 이렇게 하면 Clickable Modifier의 한계를 피할 수 있다.
728x90
반응형