안드로이드 개발 팁 #5 - HTML 적용된 TextView에서 링크 클릭은 어떻게 구현?

in kr-dev 커뮤니티2 years ago (edited)

시작하며...

1주일 넘게 이 계정으로 개발 포스트를 못 썼네요. 요즘 개발 업무로 바쁠 때라 내용 정리하기가 쉽지 않을 때였어요. 뭐.. 지금도 바쁘지만요... 한창 코딩하면서 자료 검색도 하고 그랬지만, 중간에 정리하기가 좀 애매하더라구요. 어느 정도 구현이 되고 나서 코드를 다시 보며 정리를 하는 게 좋겠다는 생각이 들었어요. 그렇게 저번 주 그리고 오늘까지는 코딩에 전념을 했구요. 이제야 시간이 조금씩 다시 나는 거 같습니다. 못 했던 정리 다시 해야죠. 일단 간단한 것부터 다시 시작합니다.


작성 동기

공지사항 리스트를 보여주는 화면 그리고 항목으로 구성된 것들 중 하나를 클릭하면 공지사항 상세내용을 보여주는 화면을 개발하고 있었습니다. 그 중 후자에서요. 공지사항 내용은 HTML 텍스트입니다. WebView를 써도 되겠지만, 복잡하지 않은 HTML 텍스트는 TextView를 사용해도 됩니다. 그런데요... 1차로 만들어 보고 나니 내용에 HTML 링크가 있더라구요. 클릭해보았지만, 브라우저로 연결되지 않았어요. 연결이 불가능한 건 아니고요. 방법이 있는데, 제가 잘 모르는 거죠. 자료를 찾아보고 테스트한 결과를 오늘 포스트에 정리합니다.


HTML 적용된 TextView에 링크 클릭 가능케 하기

검색해보았는데, 방법이 여러가지가 있더라구요. 일단 가장 간단한 방법을 적용해 보았는데, 아래와 같이 setMovementMethod 메소드를 호출하는 것입니다. 파라메터는 LinkMovementMethod 객체를 가져오면 됩니다.

val textView = activity.findViewById(R.id.exampleText) as TextView
// 중간 과정 생략 ...
textView.setMovementMethod(LinkMovementMethod.getInstance())

테스트 결과

링크 클릭 테스트 결과, 웹 브라우저로 이동함을 확인했습니다.


다른 방법은...

ClickableSpan을 사용하는 방법이 있는데요. 이것은 텍스트의 특정 범위에 링크를 적용해야 합니다. 공지글 특성상 링크가 적용될 텍스트의 위치는 정해진 게 아닙니다. 따라서 제가 구현 중인 공지사항 화면에 ClickableSpan을 사용하는 것은 불가능합니다.


그 외...

검색한 자료들 중에서는 TextView의 setClickable(true) 메소드를 호출하라고 씌어 있었습니다. 그러나 그것은 호출 하나 안 하나 링크 클릭에는 아무 영향이 없었습니다. 정확한 이유는 좀 더 찾아봐야 하겠습니다.


참고 링크


지난 안드로이드 개발 팁

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.
default.jpg

Coin Marketplace

STEEM 0.16
TRX 0.15
JST 0.029
BTC 56679.48
ETH 2377.65
USDT 1.00
SBD 2.26