长按打开上下文菜单查看?

时间:2013-04-19 17:54:17

标签: android contextmenu osmdroid

我在上下文菜单中看到的所有示例和问题都是您将上下文菜单注册到按钮或类似内容的地方。在我的情况下,我有一个显示大小的视图(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);
}

2 个答案:

答案 0 :(得分:1)

EveryThing有自己的目的和结构。因此,最好使用某些东西作为它应该如何使用。菜单也一样。

在您的情况下,我认为如果您想在没有上下文菜单机制的长时间点击事件后立即弹出,那么最好使用AlertDialog。

答案 1 :(得分:1)

您可以查看操作栏。虽然它是为3.0开发的,但是支持库可以使它适用于更老的东西。 docs似乎表明菜单风格 你正在使用不是首选,而行动吧是最佳选择。额外奖励:我觉得处理比旧的长按菜单要容易得多。