TextView и нажатие на ссылку

Интерфейс, диалоги, темы, стили, меню
Ответить
Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

TextView и нажатие на ссылку

Сообщение neoksi » 25 апр 2013, 10:23

На форме имеем TextView с установленным свойством android:autoLink="web".
Если в тексте он находит ссылку, то он её превращает в гиперссылку, на которую можно нажать и вызовется соответствующая страница в браузере.

На этот TextView у нас установлен слушатель onClick, который выполняет определенные действия при нажатии на него. И он у нас растянут на всю площадь отображения.

Задача: если было нажатие на ссылку, то открыть браузер (выполняется автоматом), а если было нажатие на область TextView, которая не содержит ссылку, то выполнить наше действие.

На стаковерфлоу нашел следующее решение:
[syntax=java]if(tv.getSelectionStart()==-1 && tv.getSelectionEnd()==-1){
// наше действие
}[/syntax]
Этот код добавляется в обработку onClick и он прекрасно действует, если в TextView, кроме ссылки, есть ещё какой-либо текст.
Но если TextView содержит только ссылку, то при нажатии на область за пределами ссылки, срабатывает выделение ссылки и обработка её нажатия.

Вопрос: можно ли предотвратить такое поведение обработки нажатия ссылки, и обрабатывать её нажатие, только в том случае, когда пользователь явно на неё нажал?

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: TextView и нажатие на ссылку

Сообщение neoksi » 25 апр 2013, 12:38

Насколько я понял, такое поведение определенно классом LinkMovementMethod. Кто-нибудь с ним работал, что в нем нужно переопределить, чтоб изменить поведение?

П.С. Самое смешное, что такое получается победить, если я в конце строки вставляю пробел, но это как-то неправильно.

Ответить