Android自定义TextView中的超链接点击事件处理

引用自:http://blog.csdn.net/zhaowei1001/article/details/6286852

package com.example.test;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	/** Called when the activity is first created. */
	private TextView tv;
	static Context ctx = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ctx = this;
		tv = (TextView) findViewById(R.id.tv);
		String htmlLinkText = "fsadffdsfadfsdfsdfsdf我的CSDN博客 fdsfsdf

"; tv.setText(Html.fromHtml(htmlLinkText)); tv.setMovementMethod(LinkMovementMethod.getInstance()); CharSequence text = tv.getText(); if (text instanceof Spannable) { int end = text.length(); Spannable sp = (Spannable) tv.getText(); URLSpan[] urls = sp.getSpans(0, end, URLSpan.class); SpannableStringBuilder style = new SpannableStringBuilder(text); // 全部删除字体的样式也没了 // style.clearSpans();//should clear old spans for (URLSpan url : urls) { MyURLSpan myURLSpan = new MyURLSpan(url.getURL()); // 删除指定的 style.removeSpan(url); style.setSpan(myURLSpan, sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } tv.setText(style); } } private static class MyURLSpan extends ClickableSpan { private String mUrl; MyURLSpan(String url) { mUrl = url; } @Override public void onClick(View widget) { // TODO Auto-generated method stub Toast.makeText(ctx, "hello:" + mUrl, Toast.LENGTH_LONG).show(); } } }



你可能感兴趣的:(Android自定义TextView中的超链接点击事件处理)