`
zhujianjia
  • 浏览: 477424 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

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"));  
  
            }  
        }  
    }  
}  
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics