Tôi có một TextView đang hiển thị HTML cơ bản, chứa hơn 2 liên kết. Tôi cần ghi lại các nhấp chuột vào các liên kết và mở các liên kết - trong WebView nội bộ của riêng tôi (không phải trong trình duyệt mặc định.)
Phương pháp phổ biến nhất để xử lý kết xuất liên kết có vẻ như sau:
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 ) );
Tuy nhiên, điều này khiến các liên kết mở trong trình duyệt web nội bộ mặc định (hiển thị hộp thoại "Hoàn thành Hành động Sử dụng ...").
Tôi đã thử triển khai onClickListener, được kích hoạt đúng cách khi liên kết được nhấp vào, nhưng tôi không biết làm thế nào để xác định LIÊN kết NÀO được nhấp vào ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Ngoài ra, tôi đã thử tạo một lớp LinkMovementMethod tùy chỉnh và triển khai 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;
}
Ý tưởng?
Giải pháp ví dụ
Tôi đã đưa ra một giải pháp phân tích cú pháp các liên kết ra khỏi chuỗi HTML và làm cho chúng có thể nhấp được, sau đó cho phép bạn phản hồi với URL.
span.getURL()
".) Bạn thậm chí có thể đăng nó như một câu trả lời, vì nó tốt hơn câu trả lời được chấp nhận hiện tại!