Ich habe eine TextView, die einfaches HTML rendert und 2+ Links enthält. Ich muss Klicks auf die Links erfassen und die Links öffnen - in meinem eigenen internen WebView (nicht im Standardbrowser).
Die gebräuchlichste Methode zum Rendern von Links scheint folgende zu sein:
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 ) );
Dies führt jedoch dazu, dass die Links im internen Standard-Webbrowser geöffnet werden (wobei das Dialogfeld "Aktion mit ... abschließen" angezeigt wird).
Ich habe versucht, einen onClickListener zu implementieren, der beim Klicken auf den Link ordnungsgemäß ausgelöst wird, aber ich weiß nicht, wie ich feststellen kann, auf welchen Link geklickt wurde ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Alternativ habe ich versucht, eine benutzerdefinierte LinkMovementMethod-Klasse zu erstellen und onTouchEvent zu implementieren ...
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;
}
Ideen?
Beispiellösung
Ich habe eine Lösung gefunden, die die Links aus einer HTML-Zeichenfolge analysiert und anklickbar macht und Sie dann auf die URL antworten lässt.
span.getURL()
".) Du könntest es sogar als Antwort posten, da es besser ist als die derzeit akzeptierte Antwort!