Android: Linkify TextView

У меня есть текстовое представление, которое мне нужно связать. Вот что я делаю ...

TextView text = (TextView) view.findViewById(R.id.name);
text.setText("Android...Update from Android");
Pattern pattern = Pattern.compile("Android");
String scheme = "www.android.com";
Linkify.addLinks(text, pattern, scheme);

Текстовое представление отображается правильно с текстом «Android ... Обновление с Android», но я столкнулся с двумя проблемами.

1) Моя текстовая строка содержит два экземпляра строка "Android". Итак, оба текста связаны. Я хочу, чтобы было связано только первое вхождение. Как мне это сделать?

2) Когда я щелкаю по тексту ссылки, открывается браузер, но URL выглядит странно. URL-адрес, который он пытается открыть, - www.comandroid. Я не знаю, что здесь не так. Текст «android» в URL заменяется. Я что-то не так делаю при ссылке на текст.

Любая помощь будет принята с благодарностью.

27
задан Book Of Zeus 12 October 2011 в 23:56
поделиться

3 ответа

 Linkify.addLinks(yourTextView, yourPattern, linkToGoto, null, 
       new Linkify.TransformFilter() {
          @Override
          public String transformUrl(Matcher match, String url) {
           return "";
          }
       });
0
ответ дан 14 October 2019 в 03:13
поделиться

У меня нет большого опыта работы с Linkify. Пока что все, что я хотел сделать - это преобразовать ссылки в тексте в ссылки, которые автоматически обрабатываются другой версией addLinks.

Однако регулярное выражение, которое вы используете для сопоставления на «Android», можно изменить, чтобы оно совпадало только с тем, которое начинает строку, настраивая ваше регулярное выражение:

Pattern pattern = Pattern.compile("^Android");

Обратите внимание на добавление «^» , Это говорит сопоставителю регулярного выражения совпадать только с шаблоном «Android», когда он запускает строку. Если это будет работать с вашими строками, то отлично. Если у вас есть другие случаи, когда слово, которое вы хотите связать, находится не в начале строки, вам нужно будет еще раз изучить регулярные выражения. Я рекомендую этот сайт, чтобы узнать больше регулярные-экспресс-сайты.info

9
ответ дан 28 November 2019 в 04:40
поделиться
TextView noteView = (TextView) findViewById(R.id.noteview);
noteView.setText(someContent);
Linkify.addLinks(noteView, Linkify.ALL);
0
ответ дан 28 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: