티스토리 뷰
TextView에 들어 있는 HTML 링크 처리
Dexx 2016. 6. 28. 14:00pc에서 배너 땜시 글이 가려져 내려씀
String strTest = "<a href=\"www.naver.com\">#우와</a> " +
"어마어마한 스케일이네요. <a href=\"www.daum.net\">#25년</a> " +
"동안 <a href=\"www.google.com\">#4억</a> " +
"이나 들여 만들다니 <a href=\"www.inter-poll.com\">#취미생활</a>";
예를 들어 위와 같이 내용을 받는다면
내용에 들어 있는 링크를 추출하기 위해
setTextViewHTML(body, strTest);
를 호출한다.
body는 캐스팅된 TextView, strTest는 문자열
protected void setTextViewHTML(TextView text, String html) {
CharSequence sequence = Html.fromHtml(html);
SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);
for (URLSpan span : urls) {
makeLinkClickable(strBuilder, span);
Log.d(TAG, String.valueOf(strBuilder) + " / " + String.valueOf(span));
}
text.setText(strBuilder);
text.setMovementMethod(LinkMovementMethod.getInstance());
}
protected void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span) {
int start = strBuilder.getSpanStart(span);
int end = strBuilder.getSpanEnd(span);
int flags = strBuilder.getSpanFlags(span);
ClickableSpan clickable = new ClickableSpan() {
public void onClick(View view) {
Toast.makeText(getActivity(), span.getURL(), Toast.LENGTH_LONG).show();
}
};
strBuilder.setSpan(clickable, start, end, flags);
strBuilder.removeSpan(span);
}
깔끔하게 잘 처리 된다.
'Android 개발 메모' 카테고리의 다른 글
String 내 Html스타일 제거 (0) | 2016.07.05 |
---|---|
현재 메모리와 토탈 메모리 확인하기 (0) | 2016.06.24 |
페이스북 공유기하기 (0) | 2016.06.23 |
댓글