获取一段文字中的某一串并标记成URL,SpannableStringBuilder

原创 2016年08月30日 10:47:54
public CharSequence getClickableHtml(String html) {
		Spanned spannedHtml = Html.fromHtml(html);
		SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);
		URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);
		for (final URLSpan span : urls) {
			setLinkClickable(clickableHtmlBuilder, span);
		}
		return clickableHtmlBuilder;
	}

	private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder, final URLSpan urlSpan) {
		int start = clickableHtmlBuilder.getSpanStart(urlSpan);
		int end = clickableHtmlBuilder.getSpanEnd(urlSpan);
		int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);
		ClickableSpan clickableSpan = new ClickableSpan() {
			public void onClick(View view) {
				// Do something with URL here.
				if (!TextUtils.isEmpty(urlSpan.getURL())) {
					int result = urlSpan.getURL().indexOf("tel");
					int result2 = urlSpan.getURL().indexOf("http");
					if (result >= 0) {
						Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(urlSpan.getURL()));
						MessageDetailsActivity.this.startActivity(intent);// 内部类
					} else if (result2 >= 0) {
						Intent intent = new Intent(MessageDetailsActivity.this, ShipWayArrivedExcDetailActivity.class);
						intent.putExtra("title", "订单详情");
						intent.putExtra("orderId", messageInfo.getCustomerOrderNo());
						intent.putExtra("url", urlSpan.getURL());
						startActivity(intent);
					}
				}

			}

		};
		clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
	}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

.Net快速获取网络文本文件最后一段文字-小应用

场景现在公司的测试环境一些文本日志不让接触,提供一个网络http服务器让人直接访问,这文件大时,一般10MB一个文件,不在同一局域网,网速限制200K,要等很久,访问很慢。.Net代码请求文本文件最新...

一串首尾相连的珠子(m个),有N种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短

#include using namespace std; #define N 3 bool GetMinlen(int *a,int m,int &shortHead,int & short...

一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。

思路:先从index=0处搜索,每检查一颗珠子,响应的颜色数量+1,如果是新的颜色则总颜色数+1.                      当颜色总数为n时,找到第一个满足条件的连续...

一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。

转换:将颜色用数字表示出来,比如五种颜色可以用0到4表示,题目就演化为由N个数字    毫无顺序的连成一串,数字串长度为m,在这长度为m的数字串中,取出一段,包含    所有N个数字,且使之长度最...

一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。

一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。这道题在网上著名的帖子微软等公司数据结构+算法面试1...

C语言,以空格为分割,以回车为结束标记,输入一串数字到一个int数组中

C语言,以空格为分割,以回车为结束标记,输入一串数字到一个int数组中

你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)

3.5.2  字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的。很自然地,一种最简单直接的方法...

Android实现加载富文本以及SpannableString、SpannableStringBuilder实现部分文字可以点击,更换颜色

最近项目中要实现部分文字变颜色,并且是可点击的。网上找了一下,实现的方式是android端加载富文本,如果你会js的话,那就方便了,表示本人不怎么会,而且项目框架和界面已经确定了,不可能再改,所以只能...

Android利用SpannableStringBuilder设置TextView中部分文字的颜色...

原文:android - SpannableString或SpannableStringBuilder以及string.xml文件中的整型和string型代替 背景介绍 在开发...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)