У мене TextView, що рендерує базовий HTML, містить 2+ посилань. Мені потрібно зафіксувати кліки посилання та відкрити посилання - у власному внутрішньому веб-перегляді (не в браузері за замовчуванням.)
Найпоширеніший метод обробки візуалізації посилань виглядає таким чином:
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 ) );
Однак це призводить до відкриття посилань у внутрішньому веб-браузері за замовчуванням (показує діалогове вікно "Завершити дію за допомогою ...").
Я спробував реалізувати onClickListener, який належним чином спрацьовує при натисканні на посилання, але я не знаю, як визначити, на яке посилання було натиснуто ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Крім того, я спробував створити користувацький клас LinkMovementMethod та впровадити 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;
}
Ідеї?
Приклад рішення
Я придумав рішення, яке розбирає посилання з рядка HTML і робить їх доступними для натискання, а потім дозволяє відповідати на URL-адресу.
span.getURL()
».) Ви навіть можете опублікувати це як відповідь, оскільки це краще, ніж відповідь, що прийнята зараз!