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

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

 
阅读更多

  1. package com.TextHtml;  
  2. import android.app.Activity;  
  3. import android.content.Context;  
  4. import android.os.Bundle;  
  5. import android.text.Html;  
  6. import android.text.Spannable;  
  7. import android.text.SpannableStringBuilder;  
  8. import android.text.method.LinkMovementMethod;  
  9. import android.text.style.ClickableSpan;  
  10. import android.text.style.URLSpan;  
  11. import android.view.View;  
  12. import android.widget.TextView;  
  13. import android.widget.Toast;  
  14. public class TextHtml extends Activity {  
  15.     /** Called when the activity is first created. */  
  16.     private TextView  tv;  
  17.     static Context ctx=null;  
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.         ctx=this;  
  23.         tv = (TextView) findViewById(R.id.tv);   
  24.         String htmlLinkText = "<a href="/" mce_href="/""http://www.baidu.com/"><u>我的CSDN博客 </u></a>";     
  25.         tv.setText(Html.fromHtml(htmlLinkText));  
  26.         tv.setMovementMethod(LinkMovementMethod.getInstance());     
  27.         CharSequence text = tv.getText();     
  28.         if(text instanceof Spannable){     
  29.             int end = text.length();     
  30.             Spannable sp = (Spannable)tv.getText();     
  31.             URLSpan[] urls=sp.getSpans(0, end, URLSpan.class);      
  32.             SpannableStringBuilder style=new SpannableStringBuilder(text);     
  33.             style.clearSpans();//should clear old spans     
  34.             for(URLSpan url : urls){     
  35.                 MyURLSpan myURLSpan = new MyURLSpan(url.getURL());     
  36.                 style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);     
  37.             }     
  38.             tv.setText(style);     
  39.         }  
  40.     }  
  41.       
  42.     private static class MyURLSpan extends ClickableSpan{     
  43.             
  44.         private String mUrl;     
  45.         MyURLSpan(String url) {     
  46.             mUrl =url;     
  47.         }     
  48.         @Override  
  49.         public void onClick(View widget) {  
  50.             // TODO Auto-generated method stub  
  51.             Toast.makeText(ctx, “hello!”,Toast.LENGTH_LONG).show();  
  52.         }     
  53.     }  
  54. }  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics