zoukankan      html  css  js  c++  java
  • 自定义 textview上LINK的点击事件

    代码
    package com.TextHtml;

    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.text.Html;
    import android.text.Spannable;
    import android.text.SpannableStringBuilder;
    import android.text.method.LinkMovementMethod;
    import android.text.style.ClickableSpan;
    import android.text.style.URLSpan;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Toast;

    public class TextHtml 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.baidu.com\"><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, "hello!",Toast.LENGTH_LONG).show();
            }   
        }
    }
  • 相关阅读:
    为《理解C#中的System.In32和int:并非鸡和鸡蛋 》做个续
    Windows C++代码heap分析详解
    Windows 内存分析之路 How to use Resource Monitor
    给C++初学者的50个忠告(好文转载)
    The 32bit generalpurpose registers EAX, EBX, ECX, EDX, ESI, EDI, EBP, and ESP
    Exceptional C++ 精华代码—实现异常安全的Stack
    Windows开发的内功和招式
    Windows代码heap内存分析实战
    十分钟让你对C++ Traits大彻大悟
    使用Windows API PostThreadMessage进行线程间消息通信
  • 原文地址:https://www.cnblogs.com/tt_mc/p/1836782.html
Copyright © 2011-2022 走看看