2010-04-18 30 views
5

我有一個TextView,其MovementMethod設置爲LinkMovementMethod。添加到TextView的文字是普通文字和網址的組合。對於URL,我想提供一個上下文菜單,當URL被長時間按下來執行諸如複製地址之類的操作時。我查看了LinkMovementMethod的源代碼,但似乎沒有任何長時間按下的相關代碼可以覆蓋。任何想法如何去實現這一目標?在TextView中長按鏈接時顯示上下文菜單

+0

你可能還想看看這個問題[在上下文菜單中實現複製](http://stackoverflow.com/questions/2226836/how-can-i-write-my-own-context -menu換複製粘貼)。它沒有答案atm,但我正在尋找一個 – Casebash 2010-05-28 02:22:01

回答

13

您可以簡單地使用registerForContextMenu如:

TextView tv = new TextView(this); 
    registerForContextMenu(tv); 

,然後重寫onCreateContextMenu創建菜單

@Override 
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
super.onCreateContextMenu(menu, v, menuInfo); 
      // Create your context menu here 
    menu.setHeaderTitle("Context Menu"); 
    menu.add(0, v.getId(), 0, "Action 1");   
} 

在那裏你可以使用視圖的ID就傳遞給事件在按下菜單項時發生,以便區分哪個視圖稱爲事件。

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    // Call your function to preform for buttons pressed in a context menu 
    // can use item.getTitle() or similar to find out button pressed 
    // item.getItemID() will return the v.getID() that we passed before 

} 
+0

我只想顯示一個上下文菜單,只有當URL被長時間按下時,我可以給出一些特定於該鏈接的選項,如「複製」和「分享' – 2010-04-20 18:00:28

+1

@Al:如果你註冊一個上下文菜單,它只會出現在長按 – Casebash 2010-05-28 00:46:40

相關問題