如何实现按键而非长按/轻点触发上下文菜单

9

我有一个ListActivity,想为列表中的每个元素实现上下文菜单。我知道通常的做法是在长按/点击时显示上下文菜单。我想知道是否有一种方法可以通过按键(最好是菜单键)来显示每个元素的上下文菜单。 换句话说,我如何通过按菜单键(或任何其他键)触发上下文菜单而不是选项菜单。

2个回答

7

我曾经为我的一个应用程序做过同样的事情,因为这对我的应用程序是有意义的。最好、最简单的方法是重写你的listActivity中的onListItemClick()方法。相比于onKeyDown(),这种方法更好,因为它特别针对列表项(视图),只适用于列表项,而不适用于屏幕上的其他部分。

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

那么你只需要覆盖上下文菜单方法,就可以了。

7
要打开上下文菜单,请调用openContextMenu()。要通过键触发它,请重写onKeyDown()onKeyUp()
话虽如此,我真的不建议这样做。
用户抱怨Android没有UI标准。相反,Android有UI约定,这些约定允许开发人员有一定的自由(更重要的是,这些约定不会成为将应用程序列入Android市场的障碍)。
然而,这些用户的观点非常有道理——当应用程序决定走UI大方向时,他们的体验会受到影响。决定让MENU键弹出上下文菜单就是其中之一。首先,在触摸屏设备上,这种方法不会很好地工作,因为您的ListView中没有选定的项目,因此用户无法确定MENU与何相关。
我认为,对于您认为通过这种方式解决的任何问题,都有更好的解决方案。

2
我同意需要为开发者制定一些规范,以使消费者在使用不同应用时体验更加一致。然而,对于这个具体问题,我确实相信有些情况下这样做是合适的,而且我自己也曾这样做过。 - mtmurdock
1
@mtmurdock:欢迎您发表意见。但是核心的Android团队似乎并不认同您的看法:http://developer.android.com/guide/practices/ui_guidelines/menu_design.html - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接