반응형
memoText.text = Html.fromHtml(timeBlock.description?.replace("\n", "<br>"))
- 위와 같은 코드가 존재한다. Html.fromHtml()을 사용하여 HTML 태그를 포함한 문자열을 Spanned 형태로 변환하여 TextView에서 HTML 렌더링을 할 수 있게 하는 코드이다.
- replace("\n", "<br>")를 통해 개행(\n)을 <br> 태그로 변환하여 HTML에서 줄 바꿈을 유지하도록 한다.
- 그런데, 사용자가 만일 EditText에 <제목> 이런식으로 입력해 버리면 통째로 사라져 버린다. 그래서 입력된 <, > 문자를 HTML 엔티티로 변환하는 과정이 필요하다.
fun fromHtmlSafe(source: String?): Spanned {
val safeText = source?.replace("<", "<")?.replace(">", ">")
return Html.fromHtml(safeText?.replace("\n", "<br>"), Html.FROM_HTML_MODE_LEGACY)
}
- 사용자가 <제목>를 입력해도 HTML 태그로 해석되지 않음.
- <내 생일!> → <내 생일!>로 변환되어 그대로 화면에 출력됨.
- 개행(\n)은 <br> 태그로 변환하여 줄바꿈 유지.
반응형