TextView中使用Linkify添加超鏈接

     首先,在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/");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章