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

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

2011-08-23 15:12 399 查看

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

        分类:           
androidjava2011-08-23 15:12849人阅读评论(0)收藏举报
androidstringlayoutencodingurlclass

运行结果如下:





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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: