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:
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
}
}