給TextView新增超連結的四種方式
阿新 • • 發佈:2019-02-20
因為在上上篇部落格中介紹了SpannableString的使用(SpannableString使用詳解),由此想到給TextView新增超連結究竟有多少種方式?經過個人總結,現在一共發現四種,如果還有其他方式歡迎大家補充,下面我就介紹一下我總結出來的四種方式。
1.直接在xml檔案中配置autoLink屬性
autoLink屬性一共有六個值,分別是none(正常),web(將文字識別為一個網址),phone(將文字識別為一個電話號碼),mail(將文字識別為一個郵件地址),map(這個,呃,該怎麼表述呢?會開啟地圖應用),all(根據文字自動識別)。一般情況下我們設定為all即可,我們看看,這個時候它就會自動將TextView中的電話號碼、郵件地址、網頁連結等識別出來,這中方式是最簡單的一種。
2.使用HTML語言
我們知道TextView可以直接顯示轉換後的HTML,那麼藉助H5開發經驗,我們知道網頁中的超連結也可以在TextView中開啟,如下:
tv1.setText(Html .fromHtml("<a href='tel:18565554482'>打電話</a>,<a href='smsto:18565554482'>發簡訊</a>,<a href='mailto:[email protected]'>發郵件</a>,<a href='http://www.baidu.com'>Go百度</a>")); tv1.setMovementMethod(LinkMovementMethod.getInstance());
只要我們寫好協議,這個其實也很簡單。
3.在strings.xml中直接寫HTML,然後在TextView的xml中直接引用即可
strings.xml中的定義如下:
<string name="tv4"><a href='tel:18565554482'>打電話</a>,<a href='smsto:18565554482'>發簡訊</a>,<a href='mailto:[email protected]'>發郵件</a>,<a href='http://www.baidu.com'>Go百度</a></string>
TextView的XML定義如下:
<TextView
android:id="@+id/tv4"
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center"
android:text="@string/tv4"
android:textSize="24sp" >
</TextView>
然後只需要在Activity中設定該TextView為可點選狀態即可:tv4.setMovementMethod(LinkMovementMethod.getInstance());
4.使用SpannableString實現超連結
關於spannableString的詳細使用參見SpannableString使用詳解,我們這裡就再次重複一下使用spannableString實現超連結功能: SpannableString ss = new SpannableString("打電話,發簡訊,發郵件,Go百度");
ss.setSpan(new URLSpan("tel:18565554482"), 0, 3,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new URLSpan("smsto:18565554482"), 4, 7,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new URLSpan("mailto:[email protected]"), 8, 11,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new URLSpan("http://www.baidu.com"), 12, 16,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv3.setText(ss);
tv3.setMovementMethod(LinkMovementMethod.getInstance());
四種方式,哈哈,都很簡單吧。