Hiển thị văn bản HTML trong Jetpack Compose
Giới thiệu
Xin chào các bạn, trong bài viết ngắn này tôi sẽ hướng dẫn các bạn cách hiển thị văn bản HTML trong Android. Tại thời điểm viết bài viết này, tính năng soạn thảo Văn bản của Jetpack không cho phép chúng tôi thực hiện việc này. Tuy nhiên, nhờ hỗ trợ tương tác tuyệt vời cho soạn thảo, chúng ta có thể sử dụng TextView hoặc MaterialTextView để hiển thị văn bản theo kiểu html.
điều kiện tiên quyết
- Kiến thức về cách sử dụng chế độ xem trong soạn thảo bằng cách sử dụng AndroidView có thể kết hợp.
- Kiến thức cơ bản về cách làm việc với Jetpack soạn thảo.
Văn bản HTML, đúng như tên gọi, là một đoạn văn bản được định dạng bằng các thẻ HTML. Một điều rất quan trọng cần lưu ý ở đây là không phải tất cả các thẻ đều được hỗ trợ trong Android. Chỉ một vài thẻ cơ bản được hỗ trợ.
Sử dụng văn bản HTML trong ngữ cảnh của Android
Nhiều điểm cuối API sử dụng định dạng này để lưu trữ nội dung văn bản. Một điểm cuối có thể sử dụng điều này vì một số lý do. Đây là một ví dụ về một điểm cuối như vậy — API Spotify.
Khi gửi yêu cầu tới API Spotify để nhận thông tin về một tập podcast, ngoài việc cung cấp phiên bản văn bản thuần túy của mô tả tập, nó còn cung cấp phiên bản mô tả có định dạng html.
{
.
.
"description" : "........."
"html_description" : ".........."
.
.
}
Phân tích văn bản định dạng HTML
Để phân tích cú pháp một chuỗi chứa văn bản có định dạng html thành thứ gì đó mà chế độ xem văn bản của Android có thể sử dụng, HtmlCompactlớp có thể được sử dụng. Lớp HtmlCompat này là một phiên bản của Htmllớp cung cấp khả năng tương thích ngược cho các phiên bản Android cũ hơn. Đây là tài liệu lớp cho cả lớp Html và HtmlCompat.
Phương HtmlCompat.fromHtml()pháp này có thể được sử dụng để chuyển đổi một chuỗi Html thành một đối tượng Spanned có thể được sử dụng với TextView hoặc MaterialTextView của Android. Đối số đầu tiên của hàm là chuỗi nguồn và đối số thứ hai cho phép bạn chỉ định một số cờ nhất định có thể được sử dụng để tùy chỉnh hành vi phân tích cú pháp của hàm. Giải thích việc sử dụng từng lá cờ nằm ngoài phạm vi của bài viết này. Chúng tôi chỉ có thể chuyển vào 0, nếu chúng tôi không cần chỉ định bất kỳ cờ nào.
// parsing html string using the HtmlCompat class
val spannedText = HtmlCompat.fromHtml(sourceString, 0)
Sau khi văn bản được chuyển đổi, chúng ta có thể chuyển nó tới TextView để hiển thị. Vì chúng ta đang sử dụng tính năng soạn thư nên chúng tôi sẽ sử dụng AndroidView có thể kết hợp được để sử dụng TextView dưới dạng có thể kết hợp được.
AndroidView(
modifier = modifier,
factory = { MaterialTextView(it) },
update = { it.text = spannedText }
)
Thưởng! — Làm cho các liên kết có thể nhấp được!
Nếu có bất kỳ liên kết nào trong văn bản, chúng tôi có thể làm cho nó có thể nhấp được bằng cách đặt thuộc autoLinkMask tính thành Linkify.WEB_URLS và đặt thuộc linksClickabletính thành true.
AndroidView(
modifier = modifier,
factory = {
MaterialTextView(it).apply {
// links
autoLinkMask = Linkify.WEB_URLS
linksClickable = true
// setting the color to use forr highlihting the links
setLinkTextColor(Color.White.toArgb())
}
},
update = {
it.maxLines = currentMaxLines
it.text = text
}
)
Phần kết luận
Và điều này kết thúc bài đăng blog ngắn này! Bạn có thể đang làm hàng triệu việc khác, nhưng bạn đã quyết định ngồi đọc hết bài viết này để biết cách hiển thị văn bản HTML trong soạn thảo Jetpack. Điều đó cho thấy rằng bạn cam kết cải thiện kỹ năng phát triển Android của mình! Hy vọng, bạn tìm thấy bài đăng trên blog này hữu ích! Nếu bạn thích bài viết này, bạn có thể kiểm tra các bài viết khác của tôi bằng cách nhấp vào đây . Như mọi khi, tôi muốn cảm ơn bạn đã dành thời gian để đọc bài viết này. Tôi mong điều may mắn nhất đến với em! Chúc mừng mã hóa ! Chúc mừng!

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































