我在我的Android应用程序中启动并运行了一个选项菜单,我已经覆盖了onCreateOptionsMenu,onOptionsItemSelected和onPrepareOptionsMenu方法来自定义菜单。
我的问题与用户点击菜单项后保持“选项”菜单打开有关。基本上,我希望能够隐藏菜单,直到用户点击设备菜单键。用户点击此密钥后,无论用户点击菜单项的次数多少,我都希望能够保留菜单。如果用户想要隐藏“选项”菜单,则只需再次单击设备菜单键即可。
是否支持这种交互(甚至是可取的)。如果不支持此互动,则非常欢迎任何替代建议。
干杯!
肖恩
答案 0 :(得分:5)
使用onCreateOptionsMenu和其他方法无法做到这一点。他们总是这样做。
但你可以用另一种方式做到这一点。但是你必须自己编写整个菜单。基本上在layout.xml中添加Menu并让它被隐藏(visibility = gone)。然后你覆盖onKeyDown方法。在那里你检查它是否是菜单键。如果菜单尚未打开,则显示菜单。如果已经打开,则隐藏它。
不应该太难。好的方面是,您可以使菜单看起来完全符合您的需要,并让它以您想要的方式做出反应。
答案 1 :(得分:2)
对于像我这样在Google中发现此问题的人:
要在选择项目后保持菜单打开,您需要以下代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
item.setChecked(!item.isChecked());
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
item.setActionView(new View(this));
item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return false;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return false;
}
});
return false;
}
重要的是在false
中返回onOptionsItemSelected
和OnActionExpandListener
的方法
来自@MayurGajra的解决方案。此处有更多详细信息:How to hold the overflow menu after I click it?