Cómo habilitar las interacciones del usuario

Jetpack Compose habilita la interactividad detallada en Text. La selección de texto ahora es más flexible y se puede realizar en diseños componibles. Las interacciones de los usuarios en el texto son diferentes de otros diseños componibles, ya que no puedes agregar un modificador a una parte de un elemento Text componible. En esta página, se destacan las APIs que permiten interacciones de usuario.

Seleccionar texto

De forma predeterminada, no se pueden seleccionar elementos componibles, lo que significa que los usuarios no pueden seleccionar y copiar texto desde tu app. Para habilitar la selección de texto, une tus elementos de texto con un elemento componible SelectionContainer:

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

Un pasaje de texto breve seleccionado por el usuario

Puede que quieras inhabilitar la selección en partes específicas de un área seleccionable. Para hacerlo, debes unir la parte que no se puede seleccionar con un elemento componible 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")
        }
    }
}

Un pasaje de texto más largo. El usuario intentó seleccionar todo el fragmento, pero no se resaltaron las dos líneas porque se les aplicó DisableSelection.

Cómo crear secciones de texto en las que se pueda hacer clic con LinkAnnotation

Para escuchar los clics en Text, puedes agregar el modificador clickable. Sin embargo, tal vez quieras adjuntar información adicional a una parte específica del valor Text, como una URL adjunta a una palabra específica para abrirla en un navegador. En casos como este, debes usar un LinkAnnotation, que es una anotación que representa una parte del texto en la que se puede hacer clic.

Con LinkAnnotation, puedes adjuntar una URL a una parte de un elemento componible Text que se abre automáticamente una vez que se hace clic, como se muestra en el siguiente fragmento:

También puedes configurar una acción personalizada en respuesta a un clic del usuario en una parte del elemento componible Text. En el siguiente fragmento, cuando el usuario hace clic en "Jetpack Compose", se muestra un vínculo y se registran las métricas si el usuario hace clic en el vínculo: