Włącz interakcje użytkowników

Jetpack Compose umożliwia szczegółową interaktywność w Text. Zaznaczanie tekstu jest teraz bardziej elastyczne i można je wykonywać w ramach układów kompozytowych. Interakcje użytkownika z tekstem różnią się od innych kompozytowych układów, ponieważ nie można dodać modyfikatora do części kompozytowego komponentu Text. Ta strona zawiera informacje o interfejsach API, które umożliwiają interakcje z użytkownikiem.

Zaznacz tekst

Domyślnie komponenty nie są wybieralne, co oznacza, że użytkownicy nie mogą zaznaczać ani kopiować tekstu w aplikacji. Aby umożliwić wybór tekstu, owiń elementy tekstowe komponentem SelectionContainer:

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

Krótki fragment tekstu wybrany przez użytkownika.

Możesz wyłączyć zaznaczenie w określonych częściach obszaru do zaznaczenia. Aby to zrobić, musisz owinąć niewybieraną część za pomocą komponentu 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")
        }
    }
}

Dłuższy fragment tekstu. Użytkownik próbował zaznaczyć cały fragment, ale 2 wiersze miały zastosowany DisableSelection, więc nie zostały zaznaczone.

Tworzenie klikalnych sekcji tekstu w usłudze LinkAnnotation

Aby rejestrować kliknięcia na elemencie Text, możesz dodać modyfikator clickable. Możesz jednak dołączyć dodatkowe informacje do określonej części wartości Text, np. adres URL dołączony do określonego słowa, aby otworzyć go w przeglądarce. W takich przypadkach musisz użyć LinkAnnotation, czyli adnotacji, która reprezentuje klikalną część tekstu.

Za pomocą LinkAnnotation możesz dołączyć adres URL do części komponentu Text, który otwiera się automatycznie po kliknięciu, jak pokazano w tym fragmencie kodu:

Możesz też skonfigurować działanie niestandardowe w odpowiedzi na kliknięcie przez użytkownika części komponentu Text. W tym fragmencie kodu, gdy użytkownik kliknie „Jetpack Compose”, wyświetli się link, a jeśli użytkownik go kliknie, zostaną zapisane dane: