在文本链接上创建自定义操作

时间:2011-06-12 23:20:06

标签: android text hyperlink action

这似乎是一个非常简单的问题,但我不确定是否有解决方案。是否可以在TextView中为文本链接(带下划线的蓝色文本)设置自定义操作?换句话说,是否可以让处理程序对链接上的onClick等事件执行某些操作?

3 个答案:

答案 0 :(得分:2)

您需要在文本中设置链接,并使用autoLink属性。它将使用标记的文本作为链接。否则,唯一的选择是使用尼古拉斯建议的OnClickListener

您可以在此处查看autoLink属性文档:http://developer.android.com/reference/android/widget/TextView.html#attr_android:autoLink

如果您的文字是:“您会在http://www.example.com找到它,并设置android:autoLink="web",则会突出显示该链接,点击后会启动浏览器。

答案 1 :(得分:0)

如果您使用EditTextTextView,则他们都有setOnClickListener()方法,您可以覆盖。

如果您正在使用WebView,并且创建的内容是您自己的,则可以使用JavaScript来处理点击链接。

如果您正在使用WebView,并且您正在查看的内容不属于您,我不确定是否有办法拦截这些内容,但您仍然可以调用setOnClickListener() WebView,因为setOnClickListener()是在View类中定义的。我只是不确定如何判断是否在该WebView中点击了一个链接......

答案 2 :(得分:0)

我也遇到过这种情况,我在 TextViews 中设置了 autolink 以自动处理 TextViews 中的 URL。但是,默认行为是在外部浏览器中打开网页,那么我们如何使其在应用内浏览器中打开(例如)?

在幕后,这由 LinkMovementMethod 为 TextView 处理。因此,自定义 TextView 的 onClickListener() 的建议(根据答案之一)并不理想,因为它涉及重新实现 LinkMovementMethod 处理的大部分内容,以便它可以精确地处理对标识为 URL 的内容的点击/点击。

最近(这篇文章发表几年后),有人提出了对 LinkMovementMethod 的改进,称为(还有什么?)BetterLinkMovementMethod,详细描述了 this blog post。我可以确认它确实对我有用。只需更改几行代码,TextView autolinks 现在就可以在应用程序内浏览器中打开(显然,可以根据需要自定义各种其他行为)。我与 BetterLinkMovementMethod 或其创建者没有任何关系,但我只是一个感恩的用户。

相关问题