【发布时间】:2013-04-19 17:54:16
【问题描述】:
我看到的所有关于上下文菜单的示例和问题都是在您将上下文菜单注册到按钮或类似内容的地方。在我的情况下,我有一个显示大小的视图(OSMDroid 地图视图),它实现了长按手势,它将传入地图视图中的按下节点。我希望长按打开上下文菜单,以便我可以对该节点进行操作。
问题是当我为上下文菜单注册 MapView 时,当按下视图本身或视图上的节点时,长按将触发。例如它已为视图注册。 (糟糕!)
如果我没有为视图注册上下文菜单,我的长按只会在选择节点时触发。 (好!)但是我不知道如何以编程方式显示或触发未首先注册的上下文菜单。
我只需要按需显示上下文菜单。有人有什么建议吗?谢谢!
@Override
public void onCreate(final Bundle savedInstanceState) {
...
this.mapView = (MapView) findViewById(R.id.mapview);
this.registerForContextMenu(this.mapView); // <-- This will register the entire view for a long press context menu
...
}
...
class NodeGestureListener implements OnItemGestureListener<NodeOverlayItem> {
@Override
public boolean onItemLongPress(int index, NodeOverlayItem node) {
openContextMenu(mapView); // <-- This won't display anything
return false;
}
}
...
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.node_menu, menu);
}
【问题讨论】:
标签: android contextmenu osmdroid