打开上下文菜单而不注册视图

时间:2010-08-04 14:50:53

标签: android view contextmenu

如何在不使用registerForContextMenu()

注册的情况下打开视图的上下文菜单

我的活动会覆盖onTouchEvent以检测动作,如果我使用registerForContextMenu()则会停止工作。我正在检测长按,所以我想将该请求转发给为我构建菜单的方法,但不知道它是否可以这样工作。

2 个答案:

答案 0 :(得分:1)

我相信您可以使用View.setOnCreateContextMenuListener在布局初始化时手动将您的活动绑定为视图的上下文菜单提供程序,然后在检测到长按时调用视图上的View.showContextMenu菜单上。它应该拨打您的onCreateContextMenu电话,就像您以正常方式注册一样。

编辑:好的,这与覆盖视图的触摸事件侦听器具有相同的效果。鉴于此,我能想到的唯一解决方案是创建隐藏视图并注册为 视图的上下文菜单提供程序,然后要求它在上面长时间触摸时显示上下文菜单可以看到真实/可见的视图。

答案 1 :(得分:1)

我的onTouchEvent有以下几行。它不漂亮,但它正在发挥作用。

private void onLongPressed(View view) {
    registerForContextMenu(view);
    view.getParent().showContextMenuForChild(view);
    unregisterForContextMenu(view);
}

onLongPressed-function正在调用,如果我在我的onTouchListener中检测到长按。