I have a TextView
with its MovementMethod
set to LinkMovementMethod
. Text added to the TextView
is a combination of normal text and URLs. For URLs, I would like to offer a context menu when the URL is long pressed for doing things such as copying the address. I've had a look at the source for LinkMovementMethod
but it doesn't seem to have any long pressed related code I could override. Any ideas on how to go around achieving this?
views:
298answers:
1
+1
A:
You can simply use registerForContextMenu eg:
TextView tv = new TextView(this);
registerForContextMenu(tv);
and then override the onCreateContextMenu to create a 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");
}
where you can use the ID of the view to pass on to the events that occur on pressing of a menu item, in order to differentiate which view called the event.
@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
}
stealthcopter
2010-04-19 22:38:48
I'm want to only show a context menu only when the URL is long pressed so I can give some options specific to that link like 'Copy' and 'Share'
Al
2010-04-20 18:00:28
@Al: If you register a context menu, it only appears on a long press
Casebash
2010-05-28 00:46:40