2011-06-12 82 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