Saya memiliki TextView yang merender HTML biasa, yang berisi 2+ tautan. Saya perlu menangkap klik pada tautan dan membuka tautan - di WebView internal saya sendiri (bukan di browser default.)
Metode paling umum untuk menangani perenderan tautan tampaknya seperti ini:
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 ) );
Namun, ini menyebabkan tautan terbuka di browser web internal default (menampilkan dialog "Selesaikan Tindakan Menggunakan ...").
Saya mencoba menerapkan onClickListener, yang dipicu dengan benar saat tautan diklik, tetapi saya tidak tahu cara menentukan tautan mana yang diklik ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Atau, saya mencoba membuat kelas LinkMovementMethod khusus dan menerapkan 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;
}
Ide ide?
Contoh solusi
Saya datang dengan solusi yang mem-parsing tautan dari string HTML dan membuatnya dapat diklik, dan kemudian memungkinkan Anda merespons URL.
span.getURL()
".) Anda bahkan dapat mempostingnya sebagai jawaban, karena itu lebih baik daripada jawaban yang diterima saat ini!