2013-07-23 3 views
2

Мне нужно создать ссылку для TextView в приложении, но фактический URL-адрес, на который указывает ссылка, должен быть добавлен динамически.Динамическое создание ссылок в TextViews

Благодаря исследованиям здесь на SO, я нашел следующий код:

 textView.setText(Html.fromHtml(
        "<b>text3:</b> Text with a " + 
        "<a href=\"http://www.google.com\">link</a> " + 
        "created in the Java source code using HTML.")); 
     textView.setMovementMethod(LinkMovementMethod.getInstance()); 

Это якобы установит связь в TextView, как это было бы в HTML. Это именно то, что мне нужно сделать, но мне нужно, чтобы URL-адрес был динамическим, на основе строковой переменной, которая будет передана в setText(). Как мне легко это сделать?

Чтобы уточнить: я хочу отобразить слово «сайт» - это ссылка, и мне нужен URL-адрес, на который эта ссылка будет динамически обновляться на основе определенного пути, который привел пользователя к этому представлению.

Спасибо!

EDIT: Вот обновленный код:

String linkedText = "<b>text3:</b> Text with a " + 
      String.format("<a href=\"%s\">link</a> ", WEB) + 
      "created in the Java source code using HTML."; 
web.setText(Html.fromHtml(linkedText)); 

web.setMovementMethod(LinkMovementMethod.getInstance()); 

Вот XML в TextView в:

 <TextView 
      android:id="@+id/vWeb" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/vPhone" 
      android:layout_marginTop="5dp" 
      android:layout_toRightOf="@+id/webIcon" 
      android:paddingLeft="1dp" 
      android:autoLink="web" 
      android:textIsSelectable="true" /> 

ответ

7

Если я правильно понял вопрос правильно, вы можете попробовать использовать string.Format():

String dynamicUrl = "http://www.google.com"; // or whatever you want, it's dynamic 

String linkedText = "<b>text3:</b> Text with a " + 
     String.format("<a href=\"%s\">link</a> ", dynamicUrl) + 
     "created in the Java source code using HTML."; 

textView.setText(Html.fromHtml(linkedText)); 
textView.setMovementMethod(LinkMovementMethod.getInstance()); 

Редактировать: Вам также необходимо удалить android:autoLink="web" из XML для этого.

+0

Это просто добавляет слово «ссылка» в текстовое окно, но не делает его доступным для кликов. – user2163853

+0

Я не понимал, что это часть вашей проблемы. Я запустил код выше, скопировав его в один из моих собственных проектов, и, похоже, он работает нормально. Есть ли невидимый вид над TextView, который может перехватывать клики? – Brian

+0

Нет, я так не верю. Ссылка не появляется даже при ее реализации. – user2163853

0

использование собственности

андроида: Автоссылка = «все»

в TextView под файл XML

которые обрабатывают для всех веб, электронная почта, телефон, карта, так и нужно беспокоиться о это

Смежные вопросы