この記事でわかること
- HTMLを表示する
- リンクをクリックできる
記事を書くきっかけ
アプリ開発中にhtmlを表示するタスクがありました。htmlの表示自体は簡単にできたのですが、リンクをクリックできるようにする時に少し詰まったので記事に残そうと思います。
参考リンク(https://medium.com/@giorgos.patronas1/endless-scrolling-in-android-with-jetpack-compose-af1f55a03d1a )
コード
@Composable
fun HtmlText(html: String) {
val textColor = Color.Black
val linkColor = Color.Blue
val spannedText = HtmlCompat.fromHtml(html.trimIndent(), 0)
AndroidView(
modifier = Modifier,
factory = {
TextView(it).apply {
movementMethod = LinkMovementMethod.getInstance()
setTextColor(textColor.toArgb())
setLinkTextColor(linkColor.toArgb())
isVerticalScrollBarEnabled = true
isScrollContainer = true
}
},
update = {
it.text = spannedText
},
)
}
詰まったポイントとしては参考リンクのコードではリンクをクリックしても遷移しなかったことです。原因はlinksClickable = true
が必要なくてmovementMethod = LinkMovementMethod.getInstance()
のみを設定してあげるとリンクをクリックして遷移できる状態になります。