티스토리 뷰

pc에서 배너 땜시 글이 가려져 내려씀












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);
}


깔끔하게 잘 처리 된다.


원문 : http://stackoverflow.com/questions/12418279/android-textview-with-clickable-links-how-to-capture-clicks

'Android 개발 메모' 카테고리의 다른 글

String 내 Html스타일 제거  (0) 2016.07.05
현재 메모리와 토탈 메모리 확인하기  (0) 2016.06.24
페이스북 공유기하기  (0) 2016.06.23
댓글