사용자 상호작용 사용 설정

Jetpack Compose는 Text에서 세분화된 상호작용을 사용 설정합니다. 이제 여러 컴포저블 레이아웃에서 더 유연하게 텍스트를 선택할 수 있습니다. Text 컴포저블의 부분에 수정자를 추가할 수 없으므로 텍스트의 사용자 상호작용은 다른 컴포저블 레이아웃과 다릅니다. 이 페이지에서는 사용자 상호작용을 사용 설정하는 API를 중점적으로 설명합니다.

텍스트 선택

기본적으로 컴포저블은 선택할 수 없습니다. 즉, 사용자가 앱에서 텍스트를 선택하고 복사할 수 없습니다. 텍스트 선택을 사용 설정하려면 텍스트 요소를 SelectionContainer 컴포저블로 래핑합니다.

@Composable
fun SelectableText() {
    SelectionContainer {
        Text("This text is selectable")
    }
}

사용자가 선택한 짧은 텍스트 문구

선택 가능한 영역의 특정 부분에서 선택 기능을 사용 중지해야 하는 경우도 있습니다. 이렇게 하려면 선택 불가능한 부분을 DisableSelection 컴포저블로 래핑해야 합니다.

@Composable
fun PartiallySelectableText() {
    SelectionContainer {
        Column {
            Text("This text is selectable")
            Text("This one too")
            Text("This one as well")
            DisableSelection {
                Text("But not this one")
                Text("Neither this one")
            }
            Text("But again, you can select this one")
            Text("And this one too")
        }
    }
}

긴 텍스트 문구 사용자가 문구 전체를 선택하려고 했지만 두 줄에 DisableSelection이 적용되어 선택되지 않았습니다.

LinkAnnotation로 클릭 가능한 텍스트 섹션 만들기

Text의 클릭을 수신하려면 clickable 수정자를 추가하면 됩니다. 하지만 브라우저에서 열리는 특정 단어에 연결된 URL과 같이 Text 값의 특정 부분에 추가 정보를 연결할 수도 있습니다. 이러한 경우에는 텍스트에서 클릭 가능한 부분을 나타내는 주석인 LinkAnnotation를 사용해야 합니다.

LinkAnnotation를 사용하면 다음 스니펫과 같이 클릭하면 자동으로 열리는 Text 컴포저블의 일부에 URL을 연결할 수 있습니다.

사용자가 Text 컴포저블의 일부를 클릭할 때 응답하여 맞춤 작업을 구성할 수도 있습니다. 다음 스니펫에서 사용자가 'Jetpack Compose'를 클릭하면 링크가 표시되고 사용자가 링크를 클릭하면 측정항목이 로깅됩니다.