J'ai un TextView qui rend du HTML de base, contenant plus de 2 liens. J'ai besoin de capturer les clics sur les liens et d'ouvrir les liens - dans ma propre WebView interne (pas dans le navigateur par défaut).
La méthode la plus courante pour gérer le rendu des liens semble être la suivante :
String str_links = "<a href='http://google.com'>Google</a><br /><a href='http://facebook.com'>Facebook</a>";
text_view.setLinksClickable(true);
text_view.setMovementMethod(LinkMovementMethod.getInstance());
text_view.setText( Html.fromHtml( str_links ) );
Cependant, les liens s'ouvrent alors dans le navigateur Web interne par défaut (avec la boîte de dialogue "Complete Action Using...").
J'ai essayé d'implémenter un onClickListener, qui se déclenche correctement lorsque le lien est cliqué, mais je ne sais pas comment déterminer QUEL lien a été cliqué...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Sinon, j'ai essayé de créer une classe personnalisée LinkMovementMethod et d'implémenter onTouchEvent...
public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {
String url = text.toString();
// this doesn't work because the text is not necessarily a URL, or even a single link...
// eg, I don't know how to extract the clicked link from the greater paragraph of text
return false;
}
Des idées ?
Exemple de solution
Je suis venu avec une solution qui analyse les liens à partir d'une chaîne HTML et les rend cliquables, puis vous permet de répondre à l'URL.