2011-06-12 51 views
2

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

+0

你在说webView中的HTML吗?或者带有AutoLink的TextView? – Aleadam 2011-06-12 23:28:12

+0

对不起,我正在谈论一个TextView。 – Brian 2011-06-12 23:31:58

回答

2

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

你可以看一下在autoLink属性文档在这里:http://developer.android.com/reference/android/widget/TextView.html#attr_android:autoLink

如果你的文字是:“你会在http://www.example.com找到它”,并设置android:autoLink="web",那么链接将被突出显示,浏览器会后开始点击它。

+0

好吧,我将假设没有办法做点什么,你点击“http://www.example.com”并设置一个用于该链接的onClickListener,用于执行其他不是链接到网页的其他内容(也许做一个敬酒或打开一个对话框)。 – Brian 2011-06-13 00:15:08

+0

我喜欢这个答案! +1 – 2011-06-13 01:10:10

+0

@AeroDroid不使用公共API知道。你总是可以看到TextView是如何实现的,并在你自己的自定义View中做一些不同的事情。 – Aleadam 2011-06-13 01:48:23

0

如果您使用的是EditTextTextView,则它们都有一个setOnClickListener()方法,您可以覆盖该方法。

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

如果您正在使用WebView并且您正在查看的内容不属于您的内容,我不确定是否有拦截这些内容的方法,但您仍然应该能够在WebView上调用setOnClickListener(),如setOnClickListener()在View类中定义。我只是不确定如何判断该WebView中是否单击链接...

+0

嗯,我不希望整个TextView被链接。我希望TextView中的一段文本成为链接,然后单击该链接将启动一个自定义操作。例如,如果TextView具有“单击此处获取某些内容”,并且“HERE”是链接,则单击该链接将打开一个对话窗口。 – Brian 2011-06-12 23:33:32

+0

这仍然可以通过onClickListener()来完成,因为点击应该报告其点击的坐标。当然,这将需要你做一些数学来确定哪个单词被击中...... – 2011-06-13 01:09:36