Включить взаимодействие с пользователем

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 . Однако, возможно, вам потребуется добавить дополнительную информацию к определенной части Text значения, например, URL-адрес, связанный с определенным словом, который нужно открыть в браузере. В таких случаях необходимо использовать LinkAnnotation — аннотацию, представляющую собой кликабельную часть текста.

С помощью LinkAnnotation можно прикрепить URL-адрес к части Text элемента, который автоматически откроется при щелчке, как показано в следующем фрагменте кода:

Вы также можете настроить пользовательское действие в ответ на щелчок пользователя по части Text элемента. В следующем фрагменте кода, когда пользователь щелкает по «Jetpack Compose», отображается ссылка, и если пользователь щелкает по этой ссылке, в журнал записываются метрики:

{% verbatim %} {% endverbatim %} {% verbatim %} {% endverbatim %}