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

解决:android TextView上响应部分文字的事件

2011-08-23 15:12 357 查看
运行结果如下:





TtActivity.java

public   class  TtActivity extends Activity {

     /* * Called when the activity is first created.  */ 

     private  TextView  tv;

     static  Context ctx = null ;

    @Override

     public   void  onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        ctx = this ;

        tv  =  (TextView) findViewById(R.id.tv); 

        //  String htmlLinkText= " <a href=\" http://www.csdn.net/CAIYUNFREEDOM/\"><u>我的CSDN博客 </u></a>";      

      //  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_EXCLUSIVE);   

            }   

            tv.setText(style);   

        }         

    }

    

     private   static   class  MyURLSpan extends ClickableSpan{   

          

         private  String mUrl;   

        MyURLSpan(String url) {   

            mUrl  = url;   

        }   

        @Override

         public   void  onClick(View widget) {

             //  TODO Auto-generated method stub 

            Toast.makeText(ctx,  ""+mUrl ,Toast.LENGTH_SHORT).show();

        }   

    }


main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  
android:id="@+id/tv"

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello"

    />

</LinearLayout>

strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

     <string name="hello">局部事件1  <a href="1" ><u>hello1</u></a>,事件2<a href="2" ><u>hello2</u></a></string>

    <string name="app_name">Tt</string>

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