在TextViews中动态创建链接

时间:2013-07-23 01:24:39

标签: android hyperlink textview

我需要能够在应用中为TextView创建链接,但链接指向的实际URL需要动态添加。

通过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中一样。这正是我需要做的,但我需要基于将传递给setText()的字符串变量的URL是动态的。我该如何轻松地做到这一点?

澄清:我想显示“网站”这个词是一个链接,我需要根据将用户带到该视图的特定路径动态更新该链接指向的URL。

谢谢!

编辑:这是更新的代码:

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());

这是TextView的XML:

        <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" />

2 个答案:

答案 0 :(得分:8)

如果我正确理解了这个问题,你可以尝试使用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());

修改:您还需要从XML中删除android:autoLink="web"才能生效。

答案 1 :(得分:0)

使用属性

android:autoLink =“all”

在XML文件下的textview中

处理所有网络,电子邮件,电话,地图,所以你需要担心它