Форум программистов, компьютерный форум CyberForum.ru

Определить, на какое слово кликнули в TextView - Android

Восстановить пароль Регистрация
 
Razangann
10 / 10 / 0
Регистрация: 11.01.2013
Сообщений: 134
31.07.2014, 00:09     Определить, на какое слово кликнули в TextView #1
Здравствуйте! Появилась надобность определить на какое слово кликнули в TextView. Как можно это сделать?
Координаты - не вариант, т.к. разные размеры экрана + текст со скроллингом, много гемора получится
Сейчас рассматриваю вариант с link'ами, но не могу найти, чтобы определить по какому именно слову нажали.
В целом должно быть так: есть текст, в нем несколько активных слов, к примеру "телефон". Это слово подчеркивается и выделяется, по нажатие на него должна появится подсказка.
Вот и в принципе вопрос
P.S. Если в кратце - нужно на конкретное слово в TextView повесить обработчик клика.
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2014, 00:09     Определить, на какое слово кликнули в TextView
Посмотрите здесь:

TextView // крэш Android
Цвет TextView Android
Android TextView in ProgressBar
Html и TextView Android
Android Обратиться к TextView
Android TextView question
Изменение TextView Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
31.07.2014, 02:50     Определить, на какое слово кликнули в TextView #2
Можно повесить листенер только на весь TextView, но не на конкретное слово. Если уж очень хочется, то в голову приходит только одно - нужное слово выводить в отдельном TextView, и уже на него вешать листенер.
krapotkin
 Аватар для krapotkin
1959 / 1905 / 490
Регистрация: 14.04.2014
Сообщений: 9,309
31.07.2014, 06:34     Определить, на какое слово кликнули в TextView #3
та функциональность, что описана, не соответствует TextView зато соответствует WebView
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
31.07.2014, 08:36     Определить, на какое слово кликнули в TextView #4
Razangann, копируйте выделенное в буфер и сверяйте.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
31.07.2014, 11:29     Определить, на какое слово кликнули в TextView #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Готовое решение через span'ы:
http://stackoverflow.com/a/8617672/2894324
Razangann
10 / 10 / 0
Регистрация: 11.01.2013
Сообщений: 134
31.07.2014, 13:18  [ТС]     Определить, на какое слово кликнули в TextView #6
Спасибо! Вот про Span - почти то, что нужно...только span'ом делается весь текст, а нужно некоторые слова, можно ли это сделать? Пробовал через textview.append("asd"), но он так же выделяется и реагирует...
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
31.07.2014, 13:49     Определить, на какое слово кликнули в TextView #7
Цитата Сообщение от Razangann Посмотреть сообщение
только span'ом делается весь текст
Вы уверены? Я попробовал только что этот пример, у меня каждое слово отдельно кликабельно.
Razangann
10 / 10 / 0
Регистрация: 11.01.2013
Сообщений: 134
31.07.2014, 13:50  [ТС]     Определить, на какое слово кликнули в TextView #8
Вот в том и проблема - каждое. А нужно к примеру только одно слово кликается, а остальные просто текст...
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
31.07.2014, 13:54     Определить, на какое слово кликнули в TextView #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Razangann Посмотреть сообщение
Вот в том и проблема - каждое.
Все, теперь понял.

Вот смотрите, здесь цикл перебирает все слова и делает их кликабельными.
нужно просто добавить проверку для слова, и если оно удовлетворяет каким-то условиям - сделать его кликабельным
Java
1
2
3
4
5
6
7
8
9
10
11
for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator
                .next()) {
            String possibleWord = definition.substring(start, end);
            if (possibleWord.equals("words")) { // здесь условие
                if (Character.isLetterOrDigit(possibleWord.charAt(0))) {
                    ClickableSpan clickSpan = getClickableSpan(possibleWord);
                    spans.setSpan(clickSpan, start, end,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                }
            }
        }
Razangann
10 / 10 / 0
Регистрация: 11.01.2013
Сообщений: 134
31.07.2014, 13:57  [ТС]     Определить, на какое слово кликнули в TextView #10
Вооооо!!!!!!!!! Круто! 2 дня мучился, наконец Спасибо огромное!!!!!))
P.S. А ничего если у меня текст русский с буквами "й" и "ё"? Смущает строчка Locale.US...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2014, 14:03     Определить, на какое слово кликнули в TextView
Еще ссылки по теме:

Часы в TextView Android
Calendar textView Android
Android TextView и Html
Android Прыжок к TextView
Анимация textview Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
31.07.2014, 14:03     Определить, на какое слово кликнули в TextView #11
Цитата Сообщение от Razangann Посмотреть сообщение
P.S. А ничего если у меня текст русский с буквами "й" и "ё"? Смущает строчка Locale.US...
Можно взять русскую локаль:
Java
1
2
Locale ruLocale = new Locale("ru","RU");
BreakIterator iterator = BreakIterator.getWordInstance(ruLocale);
Yandex
Объявления
31.07.2014, 14:03     Определить, на какое слово кликнули в TextView
Ответ Создать тему
Опции темы

Текущее время: 02:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru