Handle clicks on TextView's links while using Linkify for finding and setting the links inside the text
android, linkify, spannable, textview, urlspan
Solution
Ok so i finally managed to set my own "OnClickListener" to the TextView's links. My solution was to copy `Linkify` to my project, name it `CustomLinkify` and just change its `applyLink` method:
From:
private static final void applyLink(String url, int start, int end, Spannable text)
{
URLSpan span = new URLSpan(url);
text.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
To:
private static final void applyLink(final String url, int start, int end, Spannable text)
{
URLSpan span = new URLSpan(url)
{
@Override
public void onClick(View widget)
{
_onLinkClickListener.onLinkClicked(url);
}
};
text.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
Where `_onLinkClickListener` is a new field, set by me before using the new `CustomLinkify`.
I know its not a very elegant solution and i prefered google to allow setting a listener through the native Linkify, but, for me, this is better than implementing my own `Spannable` logics (as suggested in other related questions).
I trust the `Linkify` code and i guess i'll check from time to time to see if any changes made on it, if so, i'll of course update `CustomLinkify` with the changes.
Hope this will help someone.
Problem
i have a TextView filled with text which i get from a server. I'm using Linkify for handling all the link searching and for setting a URLSpan where needed throughout its addLinks method. The problem is that the default behavior when clicking a link is opening it in a browser, what i want is to get the clicked link and handle it my self. I don't see any method of Linkify which let me set a "OnClick" or something... Thank for your help :)