Jetpack Compose 支持 Text
中的精细互动。文字选择现在更加灵活,并且可以跨各种可组合项布局进行选择。文字中的用户互动与其他可组合项布局不同,因为您无法为 Text
可组合项的某一部分添加修饰符。本页重点介绍了
实现用户互动的功能
选择文本
默认情况下,可组合项不可选择,这意味着用户无法
从您的应用中选择和复制文本。如需启用文本选择功能,请换行
使用 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") } } }
使用 LinkAnnotation
创建可点击的文本部分
如需监听 Text
的点击次数,您可以添加 clickable
修饰符。不过,您可能想要在
Text
值,例如附加到特定字词的网址,以便在
。在这种情况下,您需要使用 LinkAnnotation
,
表示文本中可点击部分的注释。
借助 LinkAnnotation
,您可以将网址附加到 Text
可组合项的某个部分,以便在用户点击该部分时自动打开,如以下代码段所示:
@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") } } ) }
您还可以配置自定义操作,以响应用户点击
Text
可组合项。在以下代码段中,当用户点击
如果用户点击“Jetpack Compose”,系统会显示一个链接
点击链接:
@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") } } ) }
为您推荐
- 注意:当 JavaScript 处于关闭状态时,系统会显示链接文字
- Compose 中的语义
- Compose 中的无障碍功能
- Compose 中的 Material Design 2