study gomi

[Compose] longclick + longclick 안 될 때 본문

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
반응형