Ativar interações do usuário

O Jetpack Compose permite interatividade detalhada no Text. A seleção de texto agora é mais flexível e pode ser feita em layouts de composição. As interações do usuário nos textos são diferentes de outros layouts do mesmo tipo, já que não é possível adicionar um modificador a uma parte de um elemento Text. Esta página destaca as APIs que permitem interações do usuário.

Selecionar texto

Por padrão, os elementos combináveis não são selecionáveis, ou seja, os usuários não podem selecionar e copiar textos do app. Para ativar a seleção de texto, una os elementos de texto com um elemento combinável SelectionContainer:

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

Pequeno trecho de texto selecionado pelo usuário.

Você pode desativar a seleção de texto em partes específicas de uma área selecionável. Para fazer isso, é necessário unir a parte que não pode ser selecionada a um elemento combinável 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")
        }
    }
}

Trecho de texto mais longo. O usuário tentou selecionar a passagem inteira, mas, como duas linhas tinham a opção "DisableSelection" aplicada, elas não foram selecionadas.

Criar seções de texto clicáveis com LinkAnnotation

Para detectar cliques no Text, adicione o modificador clickable. No entanto, você pode anexar mais informações a uma parte do valor Text, como um URL anexado a uma determinada palavra que será aberta em um navegador. Em casos como esse, é necessário usar um LinkAnnotation, que é uma anotação que representa uma parte clicável do texto.

Com LinkAnnotation, é possível anexar um URL a uma parte de um elemento combinável Text que é aberto automaticamente após o clique, conforme mostrado no snippet abaixo:

Também é possível configurar uma ação personalizada em resposta a um clique do usuário em uma parte do elemento combinável Text. No snippet abaixo, quando o usuário clica em "Jetpack Compose", um link é exibido e as métricas são registradas se o usuário clicar no link: