获取一段文字中的某一串并标记成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);
	}

SpannableString的常用用法

SpannableString基本用法ClickableSpan、URLSpan、ImageSpan

如何修改TextView链接点击实现(包含链接生成与点击原理分析)

*这篇文章的主要目的是想要大家学习如何了解实现,修改实现,以达到举一反三,自行解决问题的目的。某天遇到这么一个需求:在TextView中的文本链接要支持跳转,嗯,这个好办,TextView本身是支持的...

使用SpannableString设置部分文字大小、颜色、超链接、点击事件

Android中需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,需要用到Spannable对象。效果如下: baidu和youku字段做了autolink,设置字体大...

利用SpannableString给特殊字符加颜色

通过SpannableString来给特殊的字符加特别的颜色。 主要的函数内容如下 private void initData() { AssetManager am = getAssets();...
  • hhbgk
  • hhbgk
  • 2013年08月10日 00:06
  • 9743

Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性

在Android中,TextView是我们最常用的用来显示文本的控件。   一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式...
  • jdsjlzx
  • jdsjlzx
  • 2014年02月12日 16:09
  • 28088

Android学习—— TextView ClickableSpan 点击链接事件 改超链接颜色

private SpannableStringBuilder dealWeiboContent(String weiboContent, TextView textView) { Patte...

textview Spannable 应用

package com.gionee.ui; import android.app.Activity; import android.app.AlertDialog; import android....

Android TextView通过Spannable识别超链接、邮箱、电话

现在有好多应用都能识别电话号码、邮箱、超链接,点击电话号码可以直接调用系统电话进行拨打,点击邮箱则调用系统邮箱或者第三方的邮箱,点击超链接则会进入浏览器,方便操作。现在经过简单的封装来实现这三个功能。...

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

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

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

#include using namespace std; #define N 3 bool GetMinlen(int *a,int m,int &shortHead,int & short...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取一段文字中的某一串并标记成URL,SpannableStringBuilder
举报原因:
原因补充:

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