TextView上的自动链接Web有错误的结果

时间:2015-11-19 08:20:57

标签: android html textview autolink

我在TextView中使用ListView组件。有时我在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>标签之间建立仅可点击的链接?

2 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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);
        }