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 las interacciones de los usuarios.
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 aplicación. Para habilitar la selección de texto, ajusta
tus elementos de texto con un elemento SelectionContainer
componible:
@Composable fun SelectableText() { SelectionContainer { Text("This text is selectable") } }
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") } } }
Crea secciones de texto en las que se puede hacer clic con LinkAnnotation
Para escuchar los clics en Text
, puedes agregar el modificador clickable
. Sin embargo, es posible que desees adjuntar información adicional a una parte determinada de
el valor Text
, como una URL adjunta a una palabra determinada que se abrirá en una
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 Text
componible.
que se abre automáticamente cuando se hace clic en él, como se muestra en el siguiente fragmento:
@Composable fun AnnotatedStringWithLinkSample() { // Display a link in the text Text( buildAnnotatedString { append("Build better apps faster with ") withLink( LinkAnnotation.Url( "https://developer.android.com/jetpack/compose", TextLinkStyles(style = SpanStyle(color = Color.Blue)) ) ) { append("Jetpack Compose") } } ) }
También puedes configurar una acción personalizada en respuesta al clic de un usuario en
el elemento Text
componible. 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:
@Composable fun AnnotatedStringWithListenerSample() { // Display a link in the text and log metrics whenever user clicks on it. In that case we handle // the link using openUri method of the LocalUriHandler val uriHandler = LocalUriHandler.current Text( buildAnnotatedString { append("Build better apps faster with ") val link = LinkAnnotation.Url( "https://developer.android.com/jetpack/compose", TextLinkStyles(SpanStyle(color = Color.Blue)) ) { val url = (it as LinkAnnotation.Url).url // log some metrics uriHandler.openUri(url) } withLink(link) { append("Jetpack Compose") } } ) }
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Semántica en Compose
- Accesibilidad en Compose
- Material Design 2 en Compose