我有一个ListActivity,我想为每个列表元素实现上下文菜单。我知道这样做的常用方法是在长按/点击时显示上下文菜单。我想知道是否有办法在按键上显示每个元素的上下文菜单(最好是菜单键)。 要重新解释我的问题,如何通过按菜单键(或任何其他键)来触发上下文菜单而不是选项菜单。
答案 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();
}
然后你要做的就是覆盖上下文菜单方法而你是黄金