2010-06-05 74 views
9

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

回答

8

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

这样说,我真的不推荐这个。

用户抱怨Android没有UI标准。相反,Android具有UI惯例,允许开发人员获得一些自由(更重要的是,让您的应用程序在Android Market上市时不会遇到障碍)。

但是,这些用户的观点非常有效 - 当应用程序决定停用UI切线时,他们的体验会受到损害。决定让菜单键弹出一个上下文菜单将是一个这样的切线。对于初学者来说,在触摸屏设备上,这不会很好,因为您的ListView中没有选定的项目,所以用户不清楚MENU所涉及的内容。

我怀疑是否有更好的解决方案来解决您认为您以这种方式解决的任何问题。

+2

我同意,需要有一些正规的约定开发商遵循使消费者的Android使用体验,从一个更一致应用到另一个。但是,对于这个具体的问题,我相信有些情况下它是合适的,我自己也是这样做的。 – mtmurdock 2010-06-05 22:45:32

+1

@mtmurdock:欢迎您提出意见。核心Android团队似乎没有分享它:http://developer.android.com/guide/practices/ui_guidelines/menu_design.html – CommonsWare 2010-06-05 23:12:13

6

我实际上为我的一个应用程序做了同样的事情,因为它对我的应用程序有意义。最好也是最简单的方法是为listActivity重写onListItemClick()。这比onKeyDown()更好,因为它专门针对有问题的列表项目(视图),并且仅适用于列表项目,而不适用于屏幕的其余部分。

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

那么所有你需要做的覆盖上下文菜单的方法和你的黄金

相关问题