您的位置:首页 > 移动开发 > Android开发

android TextView中超链接的事件捕捉(textview上LINK的点击事件)

2015-10-10 14:12 531 查看
package com.cm;  

  

import java.util.ArrayList;  

  

import android.R.color;  

import android.app.Activity;  

import android.content.Context;  

import android.graphics.Color;  

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 TextHtml extends Activity {  

    private TextView tv;  

    private static Context ctx;  

  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

  

        tv = new TextView(this);  

        ctx = this;  

  

        String htmlLinkText =  "我是超链接"+ "<a style=\"color:red;\" href='lianjie'>超链接点击事件</a>";  

        // 文字的样式(style)被覆盖,不能改变……  

  

        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.setSpan(myURLSpan, sp.getSpanStart(url),  

                        sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);  

            }  

            tv.setText(style);  

        }  

        setContentView(tv);  

  

    }  

  

    private static class MyURLSpan extends ClickableSpan {  

  

        private String mUrl;  

  

        MyURLSpan(String url) {  

            mUrl = url;  

        }  

  

        @Override  

        public void onClick(View widget) {  

            if(mUrl .equal(lianjie)){  

                Toast.makeText(ctx, mUrl, Toast.LENGTH_LONG).show();  

                widget.setBackgroundColor(Color.parseColor("#00000000"));  

  

            }  

        }  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: