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 przypadku układów kompozycyjnych. Interakcje użytkownika w tekście różnią się od innych układów kompozycyjnych, ponieważ nie można dodać modyfikatora do części funkcji kompozycyjnej Text. Na tej stronie znajdziesz interfejsy API, które umożliwiają interakcje użytkowników.

Zaznacz tekst

Komponenty kompozycyjne domyślnie nie są wybieralne, co oznacza, że użytkownicy nie mogą zaznaczać i kopiować tekstu z aplikacji. Aby włączyć wybieranie tekstu, umieść elementy tekstowe w komponencie SelectionContainer:

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

Krótki fragment tekstu wybrany przez użytkownika.

Możesz wyłączyć zaznaczanie w określonych częściach obszaru, który można zaznaczyć. Aby to zrobić, musisz umieścić część, której nie można wybrać, w komponencie 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 ponieważ w przypadku 2 wierszy zastosowano ustawienie DisableSelection, nie zostały one zaznaczone.

Tworzenie klikalnych sekcji tekstu za pomocą LinkAnnotation

Aby nasłuchiwać kliknięć elementu Text, możesz dodać modyfikator clickable. Możesz jednak chcieć dołączyć dodatkowe informacje do określonej części Text, np. adres URL dołączony do określonego słowa, który ma być otwierany w przeglądarce. W takich przypadkach musisz użyć LinkAnnotation, czyli adnotacji reprezentującej klikalną część tekstu.

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

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