【问题标题】:How can I make links in fromHTML clickable? (Android)如何使 fromHTML 中的链接可点击? (安卓)
【发布时间】:2011-05-17 05:35:24
【问题描述】:

这似乎是一个微不足道的问题,但让我有点难过。我想使用 Html.fromHtml() 加载一个 HTML 字符串,并让字符串中的任何链接都可以点击并在浏览器中打开。

基本示例:

textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));

使用这个 sn-p,文本的格式就像它是一个链接(蓝色,下划线),但它不可点击。我尝试了 Linkify,但它似乎只适用于不基于 HTML 的链接。

有什么建议吗?

【问题讨论】:

    标签: html android hyperlink


    【解决方案1】:

    如我所料,解决方案很简单:

    textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    

    第二行以某种方式激活了链接行为,尽管我不太确定如何。 Google Code 解决了同样的问题。

    【讨论】:

    • 注意,我通过引用 String.xml 资源进行了尝试。这不会工作。 :-)
    • 对 strings.xml 使用 CDATA 以避免在子标签处处理其中的链接。
    • 只想指出,如果这对您不起作用,请确保您的 textview xml 中没有 android:autoLink="web" 标签,我删除了我的并且链接开始正常工作。编辑:它确实适用于 4.0+
    • 在 4.1 上工作。我只是直接传递 html,而不是从 res 中拉字符串。
    【解决方案2】:

    应该是这样的:

    textView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
    textView.setAutoLinkMask(Linkify.WEB_URLS);
    textView.setLinksClickable(true);
    

    在 XML 中应该是

    <TextView
        android:id="@+id/txtview"
        android:autoLink="web"
        android:linksClickable="true"
        />
    

    【讨论】:

    • 我无法使用此解决方案。你试过了吗?似乎只有链接“可见”链接,而不是具有不同文本的锚点。
    • autoLink 使我们的应用在某些用户上崩溃(但我们有 2000 万用户群,所以这很重要)
    • linksClickable 默认为 true
    【解决方案3】:

    LinkMovementMethod 的 javadoc 说它

    支持用 DPad Center 或 Enter 点击链接。

    所以这样做是有道理的。

    并确认,与 4.2.2 的作品一样,只有

    textView.setMovementMethod(LinkMovementMethod.getInstance());
    

    【讨论】:

      【解决方案4】:

      正如其他答案中提到的,前进的方法是使用:

      xtView.setText(Html.fromHtml("<a href=\"http://www.google.com\">This is a link</a>"));
      textView.setMovementMethod(LinkMovementMethod.getInstance());
      

      但是,如果您设置了任何 android:autoLink 值,而不仅仅是其他 cmets 建议的“web”,这将不起作用。因此,这意味着您可以使用此解决方案来链接 URL,但代价是禁用/取消链接电话、电子邮件和地图。

      【讨论】:

      • 这是您使用 Html.fromHtml() 情况的正确答案。它会根据所选答案展开。
      • 比所选答案更好,这解决了用户设置了autoLink 时存在的问题。
      【解决方案5】:
      String data="MyTest";
      
      textView.setText(data);
      textView.setText(Html.fromHtml(data));
      textView.setMovementMethod(LinkMovementMethod.getInstance());
      textView.setLinksClickable(true);
      

      【讨论】:

      • 您应该编辑它以包括将 android:autoLink 属性设置为任何内容都会覆盖移动方法
      • linksClickable 默认为真
      猜你喜欢
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2020-06-14
      相关资源
      最近更新 更多