Android的TextView可以设置超链接,这些超链接都可以相应的跳转到对应的应用.!
例如,你如果设置了autoLink为Phone,那么你点击的时候就会到拨号的那个页面去! email和html超链接同理.
项目中本来有个是写在TextView里的, 同事给加了AutoLink为Phone. 但是项目中其他的地方(例如Dialog) 都是一点就直接打电话的. 那么此时我就想
能不能不用TextView自己的那一套玩意! 我首先想到继承TextView, 这个我后来看了下, 一是这里基于SDK开发并且木有源代码给我看, 而且工作量未知,所以放弃.
网上搜了一堆资料. 还是有启发. 用Spanable去对TextView进行一些设置, 让他处理我自己定义的东东!
SDK里面关于Spanable的API描述的太少了! 借着网上的资料和摸索, 把功能实现了.
1: 获得TextView
这个就findViewById获取就可以了
2: 创建SpannableString
构造方法里面要接收一个源字符串(String source), 那么大家要注意了, 这个字符串是会全部显示在TextView中的.
例如我这里的源字符串是: :400-xxx-xxxx
3:给SpannableString设置超链接
spString.setSpan(new YURLSpan("tel:400xxxxxxx"), 5, spString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
这里面第一个参数是 Span的类型, 我这里就写一个UrlSpan, 跟源码得知,其实文字的链接属性只需要给一个ClickableSpan就可以了
第二个参数的意思是 超链接的部分从源字符串中开始的索引, 第三个参数是超链接的部分从源字符串中结束的索引. 第四个参数是flag, 有兴趣的自己去研究下
4: 让超链接可点
textView.setMovementMethod(LinkMovementMethod.getInstance());
一定要设置这个, 不设置超链接无法点击
5: 设置TextView的文字
textView.setText(spString);
6:创建ClickableSpan的实现类,并重写onClick方法
private class YURLSpan extends URLSpan {
public YURLSpan(String url) {
super(url);
}
public void onClick(View widget) {
String url = getURL();
Intent intent = new Intent(
Intent.ACTION_CALL, Uri
.parse(url));
startActivity(intent);
}
}
这里我就直接继承的URLSpan. 如果大家继承ClickableSpan的话, 在构造方法中把url赋给成员变量就可以了.
补充一点, 如果需要设置超链接为无下划线的话, 需要重写ClickableSpan的updateDrawState方法
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
此方法还适用于自定义超链接启服务或者是跳转Activity..
分享到:
相关推荐
TextView超链接自定义样式,包含自定义字体颜色和去掉超链接下划线
Android自定义TextView链接点击和长按事件
LinkEnableTextView Android自定义超链接TextView
TextView部分文字设置成超链接,通过Intent启动另一个Activity,隐藏了下划线,自定义颜色。
指定了textView的字体,颜色,行距,样式,独立样式,内部超链接,和图片共存的方法。
使用TextView的autoLink属性设置超链接,用工具类方式和自定义View方式两种方式修改超链接显示样式和链接地址的点击事件。
一个TextView超链接启动Activity的小例子,默认会出现下划线在例子里面已经去掉并且可以自定义字体的颜色,本站以前也介绍过一个Android例子源码20多种TextView文字效果例子http://www./source/3640.html如有需要...
特征 超链接点击事件(带有按下的文本和背景颜色) 单击事件(带有按下的文本和背景颜色) 文字背景色 文字前景色 字体大小 文本样式(粗体、斜体) 文字字体 图像当然,您可以使用 api addTypeSpan添加自定义字体...
1、自定义TextView,采用富文本属性进行内容设置attributedText(包括下划线NSUnderlineStyleSingle、超链接NSLinkAttributeName 、颜色NSForegroundColorAttributeName 等信息) 2、实现代理方法textView:...
这是一个仅仅是用一个TextView实现高仿京东淘宝等各种电商APP的活动倒计时demo
XML配置升级APKuploadpic:最强微信图片上传(无bug版 修改了loaderManager两次finish的问题)usersdk:登录回调处理逻辑跳转widget: 1.AlertView:仿IOS弹窗 2.AutofitTextView:自适应的textview 3....