Show context menu when link is long pressed in TextView

柔情痞子 提交于 2019-11-27 16:53:54

问题


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?


回答1:


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

}


来源:https://stackoverflow.com/questions/2662992/show-context-menu-when-link-is-long-pressed-in-textview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!