2010-04-18 8 views
5

Ho un TextView con il MovementMethod impostato su LinkMovementMethod. Il testo aggiunto a TextView è una combinazione di testo normale e URL. Per gli URL, vorrei offrire un menu contestuale quando l'URL viene premuto a lungo per fare cose come copiare l'indirizzo. Ho dato un'occhiata all'origine per LinkMovementMethod ma non sembra che abbia un codice relativo premuto a lungo che potrei sovrascrivere. Qualche idea su come andare in giro per raggiungere questo?Mostra menu contestuale quando il collegamento viene premuto a lungo in TextView

+0

Si consiglia inoltre di guardare a questa domanda per [attuazione di copia in un menu di contesto] (http://stackoverflow.com/questions/2226836/how-can-i-write-my-own-context -menu-per-copia-incolla). Non ha una risposta, ma sto lavorando per trovare uno – Casebash

risposta

13

Si può semplicemente utilizzare registerForContextMenu esempio:

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

e quindi sovrascrivere l'onCreateContextMenu per creare un menu

@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");   
} 

dove è possibile utilizzare l'ID della vista di trasmettere agli eventi che si verificano alla pressione di una voce di menu, al fine di differenziare quale vista ha chiamato l'evento.

@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

Voglio mostrare solo un menu di scelta rapida solo quando l'URL è premuto a lungo, quindi posso dare alcune opzioni specifiche per quel collegamento come "Copia" e " Condividi ' –

+1

@Al: se si registra un menu di scelta rapida, viene visualizzato solo su una pressione prolungata – Casebash

Problemi correlati