2015-11-19 2 views
1

Я использую компонент TextView в ListView. Иногда у меня есть ссылки на мой текст в TextView, и я хочу открыть браузер, нажав на них. Все ссылки в моем тексте имеют теги:Autolink web on TextView имеет неправильный результат

Это пример моего текста. This is link

Для того, что цели я использую:

textView.setText(Html.fromHtml(someTextString)); textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setAutoLinkMask(Linkify.WEB_URLS); textView.setLinksClickable(true);

Все это хорошо, но если я ставлю какой-нибудь текст:

Это образец текста. link.thing

В этом случае link.thing был выбран как ссылка. Как я могу сделать только ссылки только для ссылок между <a></a> тегами?

ответ

0

таким образом, вы можете установить ссылку будет автоматически узнать ссылки

String myHtmlStr = "<a href=www.google.com>click here</a>"; 

      setTextViewHTML(myTextView, myHtmlStr); 

этих методов можно реализующие для достижения этой цели

protected void setTextViewHTML(TextView text, String html) { 
      CharSequence sequence = Html.fromHtml(html); 
      SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence); 
      URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class); 
      for (URLSpan span : urls) { 
       makeLinkClickable(strBuilder, span); 
      } 
      text.setText(strBuilder); 
     } 

protected void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span) { 

      int start = strBuilder.getSpanStart(span); 
      int end = strBuilder.getSpanEnd(span); 
      int flags = strBuilder.getSpanFlags(span); 
      TouchableSpan touchableSpan = new TouchableSpan() { 

       @Override 
       public void onClick(View widget) { 

        //your logic 
       } 
      }; 
      touchableSpan.setURLSpan(span); 
      strBuilder.setSpan(touchableSpan, start, end, flags); 
      strBuilder.removeSpan(span); 
     } 
1

Добавить

android:text="@string/Your_String_Contain" 

Теперь это играет жизненно Роль

<string name="Your_String_Contain">This is an example of my text <a href="http://www.yourlink.com">This is link</a></string> 

Тогда просто позвоните setMovementMethod,

TextView Tv_App_Link=(TextView)findViewById(R.id.Your_Textview_Id); 
Tv_App_Link.setMovementMethod(LinkMovementMethod.getInstance()); 
Смежные вопросы