TextView中的链接

Cat*_*ata 52 android hyperlink textview

我需要在a中放一个链接TextView,我有一个包含标签<a href="link">Text for link</a>和其他文本的字符串.问题是,如果我运行项目,我可以看到文本,但它不可点击.我也尝试使用<b>标签,看看它是否有效,似乎它也不起作用.

如何在没有Linkify使用的情况下使其工作?

Cat*_*ata 114

谢谢你的帮助.

在我在android示例中找到一些示例后,我设法完成了这项工作.

这是代码:

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());
Run Code Online (Sandbox Code Playgroud)

希望这有助于他人......

  • 注意:如果您已在TextView的属性中设置自动链接某些属性,那么这将不起作用!如果有,你必须在调用setText()之前调用`textView.setAutoLinkMask(0);` (3认同)

Mic*_*ann 42

从html获取链接是有点棘手的:

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

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

  3. 千万不要添加android:autoLink="web"到您的XML资源(部分TextView),否则标签不正确地呈现,并且不点击任何更长的时间.

备注1:如果您只包含一个链接并且您想要触发导航,即使用户点击您的链接,但在内部也是如此,
OnClickListener可能会有所帮助.TextViewTextView

备注2:
android:linksClickable="true"仍然无效(从Android 3.2开始),请使用p.而是2

  • 如果从TextView xml中的资源添加链接字符串,它不起作用.它只适用于`setText(Html.fromHtml(getResources().getString(R.string.STRING_NAME)))` (3认同)
  • 这是 ONE。谢谢! (2认同)

Gop*_*ath 28

Linkify是您必须用于创建链接的类.顺便说一句,不使用Linkify的原因是什么?

您可以链接文本视图中的所有文本,以执行访问网站或根据架构调用电话号码等操作.Android提供了最简单的方法.请考虑以下代码.

TextView noteView = (TextView) findViewById(R.id.noteview);
noteView.setText(someContent);
Linkify.addLinks(noteView, Linkify.ALL);
Run Code Online (Sandbox Code Playgroud)

对于创建自定义链接,相同的Linkify类提供了各种选项.谷歌发布了一篇博文.

  • 它不起作用..我只能看到文字. (3认同)
  • 这不适用于像`&lt;a href="http://blah.com"&gt;http://blah.com&lt;/a&gt;`这样的链接。 (2认同)

Dam*_*zak 24

我无法理解,但最后它开始工作时,我做了类似的事情:

tvTermsOfUse.setText(Html.fromHtml(getString(R.string.tv_terms_of_use_html)));
Linkify.addLinks(tvTermsOfUse, Linkify.ALL);
tvTermsOfUse.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)

文本视图如下所示:

<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" />
Run Code Online (Sandbox Code Playgroud)

和字符串res:

<string name="tv_terms_of_use_html">
    <![CDATA[This is link to <a href="http://google.com/">Google</a>.]]>
</string>
Run Code Online (Sandbox Code Playgroud)

重要的部分:Linkify.addLinks有许多工作要做之前 tvTermsOfUse.setMovementMethod,否则将无法正常工作.

XML中不需要其他设置.

我花了大约一个小时来弄明白自己,希望它可以帮助别人.

编辑:

根据@rfellons的评论

谢谢.对我来说也是作品...但只有

<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)

在Manifest.xml上. - rfellons 9月7日13:31

一定要检查一下.

  • 绝对正确!感谢您抽出时间写下来!人!答案就在这里!!!! (3认同)

son*_*ida 20

使用

android:linksClickable="true"
android:autoLink="web"
Run Code Online (Sandbox Code Playgroud)