因为在上上篇博客中介绍了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:584991843@qq.com\'>发邮件</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:584991843@qq.com\'>发邮件</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:584991843@qq.com"), 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());四种方式,哈哈,都很简单吧。