如何在按键上实现上下文菜单而不是长按/点击

时间:2010-06-05 18:56:03

标签: android

我有一个ListActivity,我想为每个列表元素实现上下文菜单。我知道这样做的常用方法是在长按/点击时显示上下文菜单。我想知道是否有办法在按键上显示每个元素的上下文菜单(最好是菜单键)。 要重新解释我的问题,如何通过按菜单键(或任何其他键)来触发上下文菜单而不是选项菜单。

2 个答案:

答案 0 :(得分:8)

要打开上下文菜单,请致电openContextMenu()。要通过密钥触发,请覆盖onKeyDown()onKeyUp()

话虽如此,我真的不建议这样做。

用户抱怨Android没有UI标准。相反,Android具有UI约定,允许开发人员获得一些自由(更重要的是,它们不会成为让您的应用在Android Market上市的障碍)。

然而,这些用户的观点是非常有效的 - 当应用决定在UI切线上时,他们的体验会受损。决定让MENU键弹出一个上下文菜单就是这样一个切线。对于初学者而言,在触摸屏设备上,这将无法正常工作,因为ListView中没有选定的项目,因此用户不清楚菜单的相关内容。

我怀疑对于您认为以这种方式解决的任何问题都有更好的解决方案。

答案 1 :(得分:6)

我实际上已经为我的某个应用做了同样的事情,因为它对我的应用程序有意义。最好和最简单的方法是覆盖listActivity的onListItemClick()。这比onKeyDown()更好,因为它特别适用于有问题的列表项(视图),并且只适用于列表项,而不适用于屏幕的其余部分。

onListItemClick(ListView l, View v, int position, long id)
{
   v.showContextMenu();
}

然后你要做的就是覆盖上下文菜单方法而你是黄金