TextView中的链接

我需要把一个链接到一个TextView ,我有一个string,包含标签<a href="link">Text for link</a>和一些其他文字。 问题是,如果我运行该项目,我可以看到文本,但不能点击。 我试着用<b>标签来看看是否有效,看起来不起作用。

我怎样才能使这个工作没有Linkify使用?

感谢您的帮助。

在Android示例中find了一些示例之后,我设法完成了这个工作。

这里是代码:

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

希望这可以帮助别人…

从html获取链接是棘手的:

  1. 通过xml android:text="@string/…或者通过setText()应用你的文本(见其他答案)

  2. 使用textView.setMovementMethod(LinkMovementMethod.getInstance())使链接可点击(见其他答案)

  3. 不要将android:autoLink="web"到您的XML资源(部分TextView )中,否则A标签将无法正确呈现并且无法再单击。

备注1:
如果你的TextView只包含一个链接,并且你想要触发导航,即使用户点击了你的链接,但是在TextViewOnClickListener也会很有帮助。

备注2:
android:linksClickable="true"仍然不起作用(从Android 3.2开始),请使用p。 2代替

Linkify是您必须用来创build链接的类。 顺便说一下,不使用Linkify的原因是什么?

您可以将textview中的所有文本链接到访问网站或根据架构调用电话号码等操作。 Android提供了最简单的方法。 考虑下面的代码。

 TextView noteView = (TextView) findViewById(R.id.noteview); noteView.setText(someContent); Linkify.addLinks(noteView, Linkify.ALL); 

为了创build自定义链接,相同的Linkify类提供了各种选项。 Google已经发布了一篇关于此的博文 。

我无法弄清楚,但最终它开始工作,当我做了这样的事情:

 tvTermsOfUse.setText(Html.fromHtml(getString(R.string.tv_terms_of_use_html))); Linkify.addLinks(tvTermsOfUse, Linkify.ALL); tvTermsOfUse.setMovementMethod(LinkMovementMethod.getInstance()); 

文本视图如下所示:

 <TextView android:id="@+id/tv_terms_of_use" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:textAlignment="gravity" android:gravity="center" android:textColor="@android:color/white" android:textSize="15sp" /> 

和stringres:

 <string name="tv_terms_of_use_html"> <![CDATA[This is link to <a href="http://google.com/">Google</a>.]]> </string> 

重要的部分: Linkify.addLinks必须 tvTermsOfUse.setMovementMethod 之前 tvTermsOfUse.setMovementMethod ,否则将无法工作。

XML中不需要其他设置。

我花了一个小时才弄清楚自己,希望能帮到别人。

编辑:

据@rfellons评论

谢谢。 也为我工作…但只有在Manifest.xml。 – rfellons 9月7日13:31

确保你也检查它。

使用

 android:linksClickable="true" android:autoLink="web" 

由于某种原因,我不能回答你的答案。 我只是想说,你可以省略textView.setText ,只是把它放在一个string资源,并设置使用android:text 。 你只需要保持textView.setMovementMethod(LinkMovementMethod.getInstance()); ; 不幸的是android:linksClickable="true"本身不起作用。

解决scheme:Linkify.addLinks(chatText,Linkify.ALL);

这工作相当正确:(在textview属性,在XML文件内)

 android:autolink="web" 

要dynamic添加链接(从服务器获取),这可以工作:

 textView.setText(Html.fromHtml( "<a href=" + response.getLink() + ">" + context.getString(R.string.link_from_server) + "</a> ")); 

并在XML中添加这个:

 android:linksClickable="true" 

如果你的strings.xml有这个:

 <string name="link_from_server">Dynamic Link</string> 

这将添加“dynamic链接”到您的文本视图,如果你碰到这一点,它会去你的服务器提供的链接。