Android实现TextView超链接一共有五种方式:推荐第四种、第五种
autoLink属性一共有六个值,分别是none(正常),web(将文本识别为一个网址),phone(将文本识别为一个电话号码),mail(将文本识别为一个邮件地址),map(这个,呃,该怎么表述呢?会打开地图应用),all(根据文本自动识别)。一般情况下我们设置为all即可,我们看看,这个时候它就会自动将TextView中的电话号码、邮件地址、网页链接等识别出来,这中方式是最简单的一种。如:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:autoLink="all" android:text=" android:textSize="16dp" />
我们知道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());
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());
关于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); //SpannableString对象设置给TextView tv3.setText(ss); //设置TextView可点击 tv3.setMovementMethod(LinkMovementMethod.getInstance());
设置单一效果:
// Setup single span SpannableTextView tv1 = (SpannableTextView) view.findViewById(R.id.tv1); Span span1 = new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan") .foregroundColor(R.color.purple_500) .backgroundColor(R.color.green_500) .typeface(mItalicFont) .build(); tv1.setFormattedText(span1);
设置多重效果叠加:
// Setup multiple spans SpannableTextView tv2 = (SpannableTextView) view.findViewById(R.id.tv2); List<Span> spans1 = new ArrayList<>(); spans1.add(new Span.Builder("ForegroundSpan") .foregroundColor(R.color.red_500) .build()); spans1.add(new Span.Builder("BackgroundSpan") .backgroundColor(R.color.yellow_500) .build()); spans1.add(new Span.Builder("ForegroundSpan and BackgroundSpan") .foregroundColor(R.color.orange_500) .backgroundColor(R.color.blue_500) .build()); spans1.add(new Span.Builder("ForegroundSpan, BackgroundSpan, and CustomTypefaceSpan") .foregroundColor(R.color.green_500) .backgroundColor(R.color.indigo_500) .typeface(mRegularFont) .build()); tv2.setFormattedText(spans1);
实现无下划线超链接:
自定义的urlspan 继承URLSpan 去掉下划线
//自定义urlspan 去掉下划线 public class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String url) { super(url); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); ds.setColor(Color.BLACK); } }
本文主要为大家介绍了5种方式实现Android TextView超链接源码实例,更多关于Android实现TextView超链接的文章请查看下面的相关链接
本文向大家介绍Android实现捕获TextView超链接的方法,包括了Android实现捕获TextView超链接的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现捕获TextView超链接的方法。分享给大家供大家参考,具体如下: 这里分享一篇捕获TextView超链接的文章,希望对大家有所帮助,我终于在歪路上回归正途了。这个捕获TextView超链接应该算是比较常
本文向大家介绍Android使用内置WebView打开TextView超链接的实现方法,包括了Android使用内置WebView打开TextView超链接的实现方法的使用技巧和注意事项,需要的朋友参考一下 需求原因 最近工作中遇到一个需求,后来通过查找相关的资料终于解决了,索性记录下来分享给大家,需要的朋友们可以参考学习。 该需求如下: **产品说,我们要实现问答功能,答案内的链接要使用内置的浏
本文向大家介绍js实现继承的5种方式,包括了js实现继承的5种方式的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现继承的5种方式。分享给大家供大家参考,具体如下: 1、继承第一种方式:对象冒充 2、继承第二种方式:call()方法方式 call方法是Function类中的方法 call方法的第一个参数的值赋值给类(即方法)中出现的this call方法的第二个参数开始依次赋值给类(
本文向大家介绍Android开发实现TextView显示丰富的文本,包括了Android开发实现TextView显示丰富的文本的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android开发实现TextView显示丰富的文本的方法。分享给大家供大家参考,具体如下: 如图,显示html的元素控件,点击连接实现上网,发email,拨号 实现源码如下: MainActivity.java st
本文向大家介绍Python 实现自动获取种子磁力链接方式,包括了Python 实现自动获取种子磁力链接方式的使用技巧和注意事项,需要的朋友参考一下 因为我闲来无事,所以准备找一部电影来看看。 然后我找到了种子搜索网站,可是这类网站的弹窗广告太多,搞得我很烦。所以我就想着自己用python写一个自动获取磁力链接的脚本。 整个大概写了半个小时。 代码如下 运行结果如下 以上这篇Python 实现自动获
本文向大家介绍Android实现可点击展开的TextView,包括了Android实现可点击展开的TextView的使用技巧和注意事项,需要的朋友参考一下 概述 Android开发过程中,经常遇到 Textview 展示不完全的情况。 遇到此情况,通常的处理是: 方案一 Textview 添加 android:ellipsize 属性,让展示不完的部分使用省略号代替。 方案二 Textview 采
本文向大家介绍PHP三种方式实现链式操作详解,包括了PHP三种方式实现链式操作详解的使用技巧和注意事项,需要的朋友参考一下 在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是: 如果要实现类似js中的链式操作,比如像下面这样应该怎么写? 下面分别用三种方式来实现: 方法一、使用魔法函数__call结合call_user_func来实现 思想:首先定义一个字符串类S
本文向大家介绍BootStrap 超链接变按钮的实现方法,包括了BootStrap 超链接变按钮的实现方法的使用技巧和注意事项,需要的朋友参考一下 上面代码效果如下: btn btn-default :变成一个按钮样子 btn-lg : 大号的按钮 btn-block : 按钮填充整个宽度 JS按钮(bootstrap)超链接 html代码: button是bootstrap样式,请先加入boot