New UI-爲TextView設置超鏈接跳轉的三個方法

New UI-爲TextView設置超鏈接跳轉的三個方法


主要介紹的是如何爲TextView設置超鏈接,跳轉到瀏覽器,短信,撥號界面等

方法分別用三種:

①使用SpannableString來實現

②使用autoLink屬性來實現

③使用HTML的<a>標籤來實現

那麼開始本節的內容!


本節正文:

1.通過SpannableString設置超鏈接:

通過SpannableString來實現的,核心方法是:

setSpan (Object what, int start, int end, int flags)

主要看start與end,一個是字符的起始下標,從0開始算,end則是結束爲止,

包含起始位置,而不包含結束位置的字符哦!另外中英文都算一個字符!

示例代碼如下:

import android.app.Activity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView textView=(TextView)findViewById(R.id.textView);
		SpannableString mSpanableString=new SpannableString("百度搜索,撥打電話,發送短信,發送彩信,發送郵件,打開地圖");
		mSpanableString.setSpan(new URLSpan("http://www.baidu.com"), 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//百度鏈接
		mSpanableString.setSpan(new URLSpan("tel:10086"), 5, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//電話
		mSpanableString.setSpan(new URLSpan("sms:10086"), 10, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//短信
		mSpanableString.setSpan(new URLSpan("mms:10086"), 15, 19, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//彩信
		mSpanableString.setSpan(new URLSpan("mailto:[email protected]"), 20, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//郵箱
		mSpanableString.setSpan(new URLSpan("geo:38.899533,-77.036476"), 25, 29, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//地圖
        textView.setMovementMethod(LinkMovementMethod.getInstance()); //設置超鏈接 (需要添加setMovementMethod方法附加響應)通過方法LinkMovementMethod去調用實際的響應 
        textView.setText(mSpanableString); 
	}
}


運行截圖:


2.通過XML中的autoLink屬性來設置:

除了上面這種方法外,我們還可以在XML通過autoLink屬性來設置不同類型的超鏈接,用法如下:



all就是全部都包含,自動識別協議頭~

在Java代碼中可以調用setAutoLinkMask(Linkify.ALL); 

這個時候可以不寫協議頭,autolink會自動識別,但是需要設置:

setMovementMethod(LinkMovementMethod.getInstance()); 

不然點擊了是不會跳轉的~

3.通過HTML中的<a>超鏈接來設置:

還有一種,就是通過html的<a>超鏈接標籤,代碼如下:

  1. //注意這裏必須加上協議號,即http://。否則,系統會以爲該鏈接是activity,而實際這個activity不存在,程序就崩潰。  
  2. String html ="<a href='http://www.baidu.com'>百度一下</a>";  
  3. CharSequence charSequence = Html.fromHtml(html);  
  4. txtShow.setText(charSequence);  
  5. txtShow.setMovementMethod(LinkMovementMethod.getInstance()); 
(轉自coder-pig)

發佈了30 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章