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); 
	}
}


运行截图:

New UI-为TextView设置超链接跳转的三个方法_第1张图片

2.通过XML中的autoLink属性来设置:

除了上面这种方法外,我们还可以在XML通过autoLink属性来设置不同类型的超链接,用法如下:

New UI-为TextView设置超链接跳转的三个方法_第2张图片


all就是全部都包含,自动识别协议头~

在Java代码中可以调用setAutoLinkMask(Linkify.ALL); 

这个时候可以不写协议头,autolink会自动识别,但是需要设置:

setMovementMethod(LinkMovementMethod.getInstance()); 

不然点击了是不会跳转的~

3.通过HTML中的<a>超链接来设置:

还有一种,就是通过html的<a>超链接标签,代码如下:

[java]  view plain copy print ?
  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)

你可能感兴趣的:(New UI-为TextView设置超链接跳转的三个方法)