Jetpack Compose : 使用 LinkAnnotation 替代 ClickableText

文本点击事件:

1
2
3
4
5
6
ClickableText(
text = AnnotatedString("Open Link"),
onClick = { offset ->
// handle click
}
)

使用 buildAnnotatedString 实现:

1
2
3
4
5
6
Text(buildAnnotatedString {
append("View my ")
withLink(LinkAnnotation.Url(url = "https://joebirch.co")) {
append("website")
}
})

默认情况下,可点击文本以下划线修饰。

可通过 SpanStyle 修改:

1
2
3
4
5
6
7
8
9
10
11
Text(buildAnnotatedString {
append("View my ")
withLink(
LinkAnnotation.Url(
url = "https://joebirch.co",
style = SpanStyle(color = MaterialTheme.colorScheme.primary)
)
) {
append("website")
}
})

参考:

https://joebirch.co/android/migrating-from-the-clickabletext-composable-to-linkannotation/