TextView中有多个超链接(textview with multiple hyperlinks)

2019-10-17 19:05发布

我有例如下面的字符串

\ n关门合唱团是一个http://www.last.fm/tag/post-grunge \”类= \ “bbcode_tag \” 相对= \ “标签\”>从Escatawpa,密西西比州,美国垃圾后带,成立于1996年,由布拉德·阿诺德(主唱)的,马特·罗伯茨(吉他),托德·哈勒尔(低音),克里斯·亨德森(吉他)和格雷格·厄普丘奇(鼓),该乐队签约环球唱片在2000年,他们的第一张专辑HTTP://www.last.fm/music/3+Doors+Down/The+Better+Life \”类= \ “bbcode_album \”>的更好的生活。 他们收到国际社会的关注与单发布的“http://www.last.fm/music/3+Doors+Down/_/Kryptonite \”。CLASS = \“bbcode_track \”>氪石”专辑接着卖出超过600万张。\ n \ n http://www.last.fm/music/3+Doors+Down\">Read更多关于关门合唱团在Last.fm. \ n \ n \ n用户提供的文本可在Creative Commons BY-SA许可,也可以是在GNU FDL可用。\ n

我想表现出具有超链接点击一个TextView整个字符串。 我也不希望看到实际的URL,只是在地方的链接的显示的文字。 关于这个问题的阅读其他职位,他们都建议定义与此类似一个TextView

<TextView
            android:id="@+id/tvArtistOverview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:autoLink="web"
            android:linksClickable="true" />

和设置的TextView到SetMovementMethod

myTextView.setMovementMethod(LinkMovementMethod.getInstance());

当我按照这些步骤,我的链接是可以点击的,但是我希望他们不会显示。 我在想什么?

这里是它目前的外观的例子。

Answer 1:

使用下面的代码。

TextView tv = ....
tv.setMovementMethod(LinkMovementMethod.getInstance());

    String content = tv.getText().toString();
    List<String> links = new ArrayList<String>();

    Pattern p = Patterns.WEB_URL;
    Matcher m = p.matcher(content);
    while (m.find()) {
        String urlStr = m.group();
        links.add(urlStr);
    }

    SpannableString f = new SpannableString(content);

    for (int i = 0; i < links.size(); i++) {
        final String url = links.get(i);

        f.setSpan(new InternalURLSpan(new OnClickListener() {
            public void onClick(View v) {
                Context ctx = v.getContext();
                String urlToOpen = url;
                if (!urlToOpen.startsWith("http://") || !urlToOpen.startsWith("https://"))
                    urlToOpen = "http://" + urlToOpen;
                openURLInBrowser(urlToOpen, ctx);
            }
        }), content.indexOf(url), content.indexOf(url) + url.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }

    tv.setText(f);


文章来源: textview with multiple hyperlinks