カスタムlink click

1421 ワード

1. MyLinkify extends Linkify, add custom sub class of URLSpan to addLinks. Use MyLinkify to apply span to string or textview.
2. If textview is linkable, get all URLSpan from the Spannable text. Use the URLSpan to construct you custom ClickableSpan.
example:
TextView tv =(TextView)this.findViewById(R.id.textview);        
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) {
          //do what you want with the mUrl
        }
 }