TextView에 링크 문자열만 있다면 click event를 처리할 수도 있지만 아래의 방법이 HTML 링크처럼 색상 변경및 밑줄까지 있으므로 훨씬 편하고 강력하다.

TextView link = (TextView) findViewById(R.id.link); 
link.setText(Html.fromHtml("<a href=\"http://www.google.com\">google</a>")); 
link.setMovementMethod(LinkMovementMethod.getInstance());

단 link.setText(Html.fromHtml(this.getString(R.string.url)); 처럼 HTML 포함한 String을 getString을 통해 가져올 때는 String id를 인코딩을 하기 때문에 string.xml 파일에 직접 쓰지말고 Layout 입력창을 이용해야한다. 그렇지 않으면 문자열을 인식하지 못한다.

메일 내용에서 웹주소, 이메일 주소, 전화번호등을 모두 파싱 - 정규식을 이용한다 - 하여 링크를 표시하고 싶은 경우에는 Linkify 개체를 사용하여 파싱할 수 있다.
TextView noteView = (TextView) findViewById(R.id.noteview);
noteView
.setText(someContent);
Linkify.addLinks(noteView, Linkify.ALL);

Pattern wikiWordMatcher = Pattern.compile("\\b[A-Z]+[a-z0-9]+[A-Z][A-Za-z0-9]+\\b");
String wikiViewURL =    "content://com.google.android.wikinotes.db.wikinotes/wikinotes/";
Linkify.addLinks(noteView, wikiWordMatcher, wikiViewURL);
더 자세한 내용은 http://developer.android.com/resources/articles/wikinotes-linkify.html 를 참고한다.

+ Recent posts