1. 程式人生 > >給TextView新增超連結的四種方式

給TextView新增超連結的四種方式

因為在上上篇部落格中介紹了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());
四種方式,哈哈,都很簡單吧。