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获取链接是棘手的:
-
通过xml
android:text="@string/…
或者通过setText()
应用你的文本(见其他答案) -
使用
textView.setMovementMethod(LinkMovementMethod.getInstance())
使链接可点击(见其他答案) -
不要将
android:autoLink="web"
到您的XML资源(部分TextView
)中,否则A标签将无法正确呈现并且无法再单击。
备注1:
如果你的TextView
只包含一个链接,并且你想要触发导航,即使用户点击了你的链接,但是在TextView
, OnClickListener
也会很有帮助。
备注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链接”到您的文本视图,如果你碰到这一点,它会去你的服务器提供的链接。