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

Android 在文本链接上创建自定义操作,android,text,hyperlink,action,Android,Text,Hyperlink,Action,这似乎是一个相当简单的问题,但我不确定是否有解决方案。是否可以为TextView中的文本链接(带下划线的蓝色文本)设置自定义操作?换句话说,是否可以让处理程序对链接上的onClick这样的事件执行某些操作?如果您使用的是EditText或TextView,则它们都有一个可以覆盖的方法 如果您使用的是WebView,并且创建的内容是您自己的,那么您可以使用JavaScript来处理链接的点击 如果您使用的是WebView,而您正在查看的内容不是您的,我不确定是否有办法拦截这些内容,但您仍然可以在W

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

如果您使用的是
EditText
TextView
,则它们都有一个可以覆盖的方法

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


如果您使用的是
WebView
,而您正在查看的内容不是您的,我不确定是否有办法拦截这些内容,但您仍然可以在WebView上调用setOnClickListener(),因为setOnClickListener()是在View类中定义的。我只是不确定您如何判断是否在该网络视图中单击了链接…

您需要在文本中设置链接,并使用
自动链接属性。它将使用标记的文本作为链接。否则,唯一的选择就是使用nicholas建议的
OnClickListener

您可以在此处查看
autoLink
属性文档:


如果您的文本是:“You will find at”,并且您设置了
android:autoLink=“web”
,则该链接将高亮显示,单击后浏览器将启动。

我也遇到了这种情况,我在TextView中设置了
自动链接
,以自动处理TextView中的URL。但是,默认行为是在外部浏览器中打开网页,那么如何在应用程序内浏览器中打开它(例如)

在引擎盖下面,这是由TextView处理的。因此,定制TextView的onClickListener()的建议(由其中一个答案提出)并不理想,因为这将涉及重新实现LinkMovementMethod处理的大部分内容,以便它能够精确地处理标识为URL的内容上的单击/点击


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

你是在网络视图中谈论HTML吗?还是带自动链接的文本视图?对不起,我说的是文本视图。我不想链接整个文本视图。我希望TextView中的一段文本成为链接,单击该链接将启动自定义操作。例如,如果TextView有“单击此处查找某个内容”,而“此处”是链接,单击该链接将打开一个对话框窗口。这仍然可以通过onClickListener()完成,因为单击应该报告其命中的坐标。当然,这需要你做一些数学运算来确定哪个词被击中了……好吧,我假设你点击“”并为该链接设置onClickListener来做一些其他不是网页链接的事情是不可能的(可能是干杯或打开对话)。@AeroDroid据我所知,使用公共API是不可能的。您始终可以看到TextView是如何实现的,并在自己的自定义视图中执行一些不同的操作。