2010-04-18 5 views
5

Ich habe eine TextView mit MovementMethod auf LinkMovementMethod festgelegt. Text, der zu TextView hinzugefügt wird, ist eine Kombination aus normalem Text und URLs. Für URLs möchte ich ein Kontextmenü anbieten, wenn die URL lange gedrückt wird, um beispielsweise die Adresse zu kopieren. Ich habe mir die Quelle für LinkMovementMethod angesehen, aber es scheint keinen langen gedrückten verwandten Code zu haben, den ich überschreiben könnte. Irgendwelche Ideen, wie man das erreichen kann?Zeige Kontext-Menü, wenn Link in TextView gedrückt wird

+0

Sie können auch auf diese Frage suchen möchten nach [Kopieren in einem Kontextmenü der Umsetzung] (http://stackoverflow.com/questions/2226836/how-can-i-write-my-own-context -Menü-zum-Kopieren-Einfügen). Es hat keine Antwort atm, aber ich arbeite an der Suche nach einem – Casebash

Antwort

13

Sie können einfach verwenden registerForContextMenu zB:

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

und dann die onCreateContextMenu außer Kraft setzen ein Menü zu erstellen

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

, wo Sie die ID der Blick auf die Ereignisse weitergeben können, dass treten beim Drücken eines Menüpunktes auf, um zu unterscheiden, welche Ansicht das Ereignis genannt wird.

@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

Ich möchte nur ein Kontextmenü nur anzeigen, wenn die URL lange gedrückt ist, so kann ich einige Optionen für diesen Link wie "Kopieren" und "Geben" Share ' –

+1

@Al: Wenn Sie ein Kontextmenü registrieren, erscheint es nur bei einem langen Druck – Casebash