我的应用程序的主视图显示图形画布。主Activity的onCreate方法包含命令registerForContextMenu(mapview);
,因此当用户长按此View时,将打开一个上下文菜单,其内容在Activity onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
方法中定义。< / p>
我想根据印刷机的位置改变菜单的内容,但我看不出如何找到该位置。提供给onCreateContextMenu的参数似乎都不提供该信息。
答案 0 :(得分:3)
棘手的,只是在黑暗中刺伤我害怕...
你没有提到你的'主视图'类是什么,但是如果它是'原生'的安卓类,那么你可以自己扩展你正在使用的类。
为您的班级提供公共X和Y数据成员,例如......
public int lastKnownX; // Might be float types - can't remember
public int lastKnownY;
同样在您的课程中,覆盖onTouch(View v, MotionEvent event)
并检查MotionEvent
以查看它是否为ACTION_DOWN
事件 - 如果是,请将X和Y坐标存储在{{ 1}}和lastKnownX
。 - 忽略任何其他事件,并确保无论运动动作如何都始终返回false(以使过程透明)。
我的理论是,当解释长按/按下时,您最后知道的lastKnownY
坐标将是长按开始的位置,因为它们可以被您的活动访问(您定义了它们)作为公共),ACTION_DOWN
方法将能够使用它们。
另一方面,我可能会离开,但这就是我如何解决这个问题。值得一试。 : - )