如何在不使用registerForContextMenu()
注册视图的情况下打开上下文菜单?
我的活动覆盖了onTouchEvent
以检测手势,如果我使用registerForContextMenu()
,它会停止工作。我正在检测长按事件,因此我想将该请求转发到一个方法,该方法将为我构建菜单,但不知道是否可以这样工作。
如何在不使用registerForContextMenu()
注册视图的情况下打开上下文菜单?
我的活动覆盖了onTouchEvent
以检测手势,如果我使用registerForContextMenu()
,它会停止工作。我正在检测长按事件,因此我想将该请求转发到一个方法,该方法将为我构建菜单,但不知道是否可以这样工作。
我的onTouchEvent有以下几行代码。它们不太美观,但是它们能够正常工作。
private void onLongPressed(View view) {
registerForContextMenu(view);
view.getParent().showContextMenuForChild(view);
unregisterForContextMenu(view);
}
我相信你可以使用View.setOnCreateContextMenuListener在布局初始化时手动绑定你的活动作为视图的上下文菜单提供者,然后在检测到长按时调用View.showContextMenu来呈现菜单。它应该像正常注册一样调用你的onCreateContextMenu
。
编辑:好吧,这与覆盖视图的触摸事件监听器具有相同的效果。鉴于此,我唯一能想到的解决方案是创建一个隐藏的视图并注册为该视图的上下文菜单提供者,然后在看到真实/可见视图上的长按时要求它显示上下文菜单。