android 为TextView的部分文字设置超链接样式并监听点击事件

android 为TextView的部分文字设置超链接样式并监听点击事件

标签: android textview超链接
  5961人阅读  评论(0)  收藏  举报
  分类:
android开发(79)    android特效(6) 
[java]  view plain  copy
  1. package com.example.testandroid1;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.text.SpannableString;  
  6. import android.text.Spanned;  
  7. import android.text.method.LinkMovementMethod;  
  8. import android.text.style.ClickableSpan;  
  9. import android.view.View;  
  10. import android.widget.TextView;  
  11. import android.widget.Toast;  
  12.   
  13. public class MainActivity extends Activity {  
  14.   
  15.     private TextView textView;  
  16.   
  17.     private String clickStr1 = "", clickStr2 = "";  
  18.     private String str1 = "", str2 = "", str3 = "";  
  19.     private int start1 = 0, start2 = 0, end1 = 0, end2 = 0;  
  20.   
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  
  25.   
  26.         String s = "球队[呼赛测试球队3]邀请[球员2]加入球队";  
  27.   
  28.         textView = (TextView) findViewById(R.id.main_textview);  
  29.         textView.setText(getClickableSpan());  
  30.   
  31.         //此行必须有  
  32.         textView.setMovementMethod(LinkMovementMethod.getInstance());  
  33.   
  34.     }  
  35.   
  36.   
  37.     private SpannableString getClickableSpan() {  
  38.   
  39.         //监听器  
  40.         View.OnClickListener listener = new View.OnClickListener() {  
  41.             @Override  
  42.             public void onClick(View v) {  
  43.                 Toast.makeText(MainActivity.this"Click Success", Toast.LENGTH_SHORT).show();  
  44.             }  
  45.         };  
  46.   
  47.         SpannableString spanableInfo = new SpannableString("球队[呼赛测试球队3]邀请[球员2]加入球队");  
  48.         int start = 2;  //超链接起始位置  
  49.         int end = 11;   //超链接结束位置  
  50.   
  51.         //可以为多部分设置超链接  
  52.         spanableInfo.setSpan(new Clickable(listener), start, end, Spanned.SPAN_MARK_MARK);  
  53.         spanableInfo.setSpan(new Clickable(listener), 1418, Spanned.SPAN_MARK_MARK);  
  54.   
  55.         return spanableInfo;  
  56.     }  
  57. }  
  58.   
  59.     class Clickable extends ClickableSpan implements View.OnClickListener {  
  60.         private final View.OnClickListener mListener;  
  61.   
  62.         public Clickable(View.OnClickListener listener) {  
  63.             mListener = listener;  
  64.         }  
  65.   
  66.         @Override  
  67.         public void onClick(View view) {  
  68.             mListener.onClick(view);  
  69.         }  
  70.   
  71.   
  72.   
  73.     /*private void formatData(String s){ 
  74.         for(int i=0;i<2;i++){ 
  75.             if (i==0){ 
  76.                 start1 = s.indexOf("[",0); 
  77.                 end1 = s.indexOf("]",0); 
  78.             }else{ 
  79.                 start2 = s.indexOf("[",start1+1); 
  80.                 end2 = s.indexOf("]",end1+1); 
  81.             } 
  82.             if (i==0){ 
  83.                 if (start1 > 0){ 
  84.                     clickStr1 = s.substring(start1,end1+1); 
  85.                 } 
  86.             } 
  87.             if (i==1){ 
  88.                 if (start2>0){ 
  89.                     clickStr2 = s.substring(start2,end2+1); 
  90.                 } 
  91.             } 
  92.         } 
  93.  
  94.         str1 = s.substring(0,start1); 
  95.         str2 = s.substring(end1+1,start2); 
  96.         str3 = s.substring(end2+1,s.length()); 
  97.     }*/  
  98.   
  99. }  

你可能感兴趣的:(android)