android 同一个TextView不同文字的点击事件

  1. 转自:http://blog.csdn.net/hap_gx/article/details/8781910
  2. package com.example.textviewclick;  
  3.   
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.text.Html;  
  7. import android.text.Spannable;  
  8. import android.text.SpannableStringBuilder;  
  9. import android.text.TextPaint;  
  10. import android.text.method.LinkMovementMethod;  
  11. import android.text.style.ClickableSpan;  
  12. import android.text.style.URLSpan;  
  13. import android.view.View;  
  14. import android.widget.TextView;  
  15. import android.widget.Toast;  
  16.   
  17. public class MainActivity extends Activity {  
  18.     TextView mTextView2;       
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.textview);    
  23.           
  24.         mTextView2 = (TextView)findViewById(R.id.text2);    
  25.         /*********** 同一个TextView不同文字的点击事件*******/  
  26.         StringBuilder actionText = new StringBuilder();  
  27.         actionText  
  28.                 .append("<a style=\"text-decoration:none;\" href='username'>"  
  29.                         + "username:" + " </a>");  
  30.         actionText  
  31.                 .append("隐形人"  
  32.                         + "<a style=\"color:blue;text-decoration:none;\" href='singstar'> "  
  33.                         + " love" + "</a>");  
  34.             actionText.append(" : \"" + "孙燕姿" + "\"");  
  35.         mTextView2.setText(Html.fromHtml(actionText.toString()));  
  36.         mTextView2.setMovementMethod(LinkMovementMethod  
  37.                 .getInstance());  
  38.         CharSequence text = mTextView2.getText();  
  39.         int ends = text.length();  
  40.         Spannable spannable = (Spannable) mTextView2.getText();  
  41.         URLSpan[] urlspan = spannable.getSpans(0, ends, URLSpan.class);  
  42.         SpannableStringBuilder stylesBuilder = new SpannableStringBuilder(text);  
  43.         stylesBuilder.clearSpans(); // should clear old spans  
  44.         for (URLSpan url : urlspan) {  
  45.             TextViewURLSpan myURLSpan = new TextViewURLSpan(url.getURL());  
  46.             stylesBuilder.setSpan(myURLSpan, spannable.getSpanStart(url),  
  47.                     spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
  48.         }  
  49.         mTextView2.setText(stylesBuilder);  
  50.     }  
  51.       
  52.     private class TextViewURLSpan extends ClickableSpan {  
  53.         private String clickString;  
  54.   
  55.         public TextViewURLSpan(String clickString) {  
  56.             this.clickString = clickString;  
  57.         }  
  58.   
  59.         @Override  
  60.         public void updateDrawState(TextPaint ds) {  
  61.             ds.setColor(MainActivity.this.getResources().getColor(R.color.text_color));  
  62.             ds.setUnderlineText(false); //去掉下划线  
  63.         }  
  64.           
  65.         @Override  
  66.         public void onClick(View widget) {  
  67.             if (clickString.equals("username")) {  
  68.                 Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)  
  69.                 .show();  
  70.             } else if (clickString.equals("singstar")) {  
  71.                 Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)  
  72.                         .show();  
  73.             }  
  74.         }  
  75.     }  
  76.   
  77. }  

你可能感兴趣的:(android 同一个TextView不同文字的点击事件)