如何在不使用registerForContextMenu()
?
我的活动会覆盖onTouchEvent
以检测动作,如果我使用registerForContextMenu()
则会停止工作。我正在检测长按,所以我想将该请求转发给为我构建菜单的方法,但不知道它是否可以这样工作。
答案 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中检测到长按。