当前位置: 首页 > 知识库问答 >
问题:

将可点击跨距转换为可点击跨距

葛修永
2023-03-14

我正在尝试在文本字符串中制作可点击的链接,当单击时启动活动。我使用Linkify()来检测文本中的链接。此函数能够向文本添加链接,但只能添加Web URL。我需要将我的输出转换为ClickableSpan,以便我可以实现此技术。

如何使Linkify()的已标识链接成为可点击链接,并指向某个活动?

以下是我在Linkify中使用的代码:

// Linkify parameters
final static Pattern pattern = Pattern.compile("\\[[^]]*]"); // defines the fact that links are bound by [square brackets]
final String scheme = "http://"; // TODO: Currently this is just a blank link
Linkify.addLinks(linkText, pattern, scheme);

共有2个答案

漆雕奇逸
2023-03-14

如何使Linkify()的已标识链接成为可点击链接,并指向某个活动?

调用addLinks()后,调用getText()以从TextView中检索Spane对象。此对象将有一系列URLSpan对象,每个匹配的链接一个——您可以通过调用getSpans()来获取这些对象的数组。您需要注意每个跨度的开始和结束位置(通过getSpans Start()getSpend()),删除URLSpan,并将其替换为您自己的跨度以执行您想要的操作。

朱渝
2023-03-14

对于您想要实现的目标,可能更简单的方法是覆盖active中的start Active()方法,并使用文本中的URL拦截ACTION_VIEW意图。类似于这样:

public class MyActivity extends Activity {

    @Override
    public void startActivity(Intent intent) {
        final String action = intent.getAction();
        if (action.equals(Intent.ACTION_VIEW)) {
            // launch our other activity instead
            Intent ourIntent = new Intent(this, MyOtherActivity.class);
            ourIntent.setData(intent.getData());
            super.startActivity(ourIntent);

            // we're done!
            return;
        }

        // else, normal handling by the framework
        super.startActivity(intent);
    }

    // the rest of your activity code

}

作为参考,这是URLSpan的源代码,它将触发上面的start Active()方法。

 类似资料:
  • 问题内容: 我的密码 HTML: JS: CSS: 问题 我可以在chrome中单击,但不能在ff中单击。当我单击时,它单击整体。 题: 我的代码无效吗?如果我的代码有效,该问题的解决方案是什么。 我尝试过的 我尝试从控制台进行操作,并且它在ff中可以完美运行,所以我想问题是在内部无法单击。 而且也不起作用。 我试过放进去,但是也不行。 问题答案: 请参考规范,最引人注目的是禁止的内容(在SGML

  • 作为一个真正的app,当前列表的每一个item布局应该做一些工作。第一件事就是创建一个合适的XML,能符合我们的需要就行。我们希望显示一个图标,日期,描述以及最高和最低温度。所以让我们创建一个名为item_forecast.xml的layout: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http

  • 有没有办法将图像分割到区域(现在是JLabel,但如果需要我可以更改它)? 我在我的程序中使用swing,我有一个图像(这个例子是正方形),里面有一些三角形、星星和梯形(它可以是JPG、PNG等)。 这个想法是用户将点击这些形状中的一个,然后我将在用户点击的区域顶部放置另一个小图标。用户可以点击多个区域,但在一天结束时,我需要知道哪些形状被点击。

  • 我在chromedriver上运行测试时出错,因为它在FirefoxDriver上运行良好: WebDriverException:未知错误:元素在点(1270,449)处不可单击。其他元素将接收点击:(会话信息:Chrome=44.0.2403.157)(驱动程序信息:ChromeDriver=2.17.340124 知道怎么了吗?我正在使用最新的ChromeDriver。

  • 我有一个web应用程序,我正试图为其编写selenium测试,但我遇到了Chrome驱动程序的问题。有一个向导类型的界面,用户可以使用它来填写表单。有一个按钮可以添加一个带有几个设置的行。我已经用黑色概述了这一点。蓝色矩形显示按钮的可点击区域。这个矩形的中间没有重叠其他任何东西。 问题是有一个巨大的div包含整个屏幕和Chrome说这个div将获得点击。那么,我该怎么绕过这件事呢?这似乎不是正确的

  • 问题内容: 这个问题是由于总的中间在试图忠实于什么实际用户一样。所以我在想这种方法: 首先,而不是查找元素,然后单击: 编写单击以下内容的通用函数: 然后,当发生此异常时,请尝试以其他方式单击。 您认为这种方法可行吗? 问题答案: 请仔细阅读此堆栈溢出答案以更好地理解。 更新 我们也可以尝试 也请尝试如下 尝试使用Y坐标单击 尝试使用X坐标单击 希望这对您有帮助