首先,在TextView所屬xml配置文件中,直接添加android:autoLink特性即可,它支持一個或多個(用分割線)自定義的值:none、web、email、phone或all。
另外,你還可以用Linkify來添加超鏈接,下面介紹一下這個類:
Linkify是一個輔助類,通過RegEx樣式匹配,自動地在TextView類(和繼承的類)中創建超鏈接。
符合特定的RegEx樣式的文本會被轉變成可點擊的超鏈接,這些超鏈接隱式地調用startActivity(new Intent(Intent.ACTION_VIEW, uri)),符合的文本會作爲目標URI。
你可以指定任意的字符串樣式爲鏈接;Linkify類提供了預置的通用內容類型(如電話號碼和e-mail、web地址)。Linkify.addLinks()靜態方法接受一個View來製作鏈接,還包括一個或多個支持的默認內容類型的位結果。Linkify類提供了一些內容類型:WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL。接下來的代碼片段顯示如何爲TextView製作鏈接顯示web和e-mail地址爲超鏈接。當點擊時,它們會相應地打開瀏覽器或e-mail應用程序。
TextView myTextView = (TextView)findViewById(R.id.myTextView);
Linkify.addLinks(myTextView, Linkify.WEB_URLSLinkify .EMAIL_ADDRESSES);
或者
TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setAutoLinkMask(Linkify.EMAIL_ADDRESSES|Linkify.MAP_ADDRESSES|Linkify.PHONE_NUMBERS);
myTextView.setMovementMethod(LinkMovementMethod.getInstance());
刪除鏈接:
myTextView.setAutoLinkMask(0);
可是有時候我們需要自定義一些超鏈接,像新浪微博中的@和#,這時候怎麼辦呢?
爲了定義自己的鏈接字符串,你需要創建一個RegEx樣式來匹配文本,進而顯示成超鏈接。和本地類型一樣,通過調用Linkify.addLinks來指定目標View,但這次,傳入的是的RegEx樣式。你還可以傳入一個前綴,當鏈接點擊時,它會添加到目標URI上。例如:
Pattern p = Pattern.compile("\\bquake[-9]*\\b", Pattern.CASE_INSENSITIVE);
Linkify.addLinks(myTextView, p, "content://com.paad.earthquake/earthquakes/");