我有自定义操作栏的活动(基本上是自定义布局xml),因此我在布局文件中创建了一个自定义菜单按钮并显示一个弹出窗口,
我正在使用此回调在硬件选项菜单上显示相同的弹出窗口,但是给出了一个奇怪的行为,例如,当运行onresume时,这将打开自定义菜单。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//return super.onCreateOptionsMenu(menu);
showHideMenu();
return false;
}
您能否建议我可以将showHideMenu();
放在哪里,就像自定义选项菜单一样
//showHideMenu() code
private void showHideMenu() {
if (mPopUpMenu.isShowing())
dismissPopUpMenu();
else
showMenu();
}
private void dismissPopUpMenu() {
// dismiss menu
if (mPopUpMenu != null)
mPopUpMenu.dismiss();
}
答案 0 :(得分:1)
你应该找一个 up keyevent:
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
showHideMenu();
return true;
}
return super.onKeyUp(keyCode, event);
}
将此包含在PopUp中:
mPopUpMenu.getContentView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// ... payload action here. e.g. popupMenu.dismiss();
return true;
}
return false;
}
});
答案 1 :(得分:0)
您可以使用PopupMenu
来显示自定义菜单。
为此你必须找到一个附加menu
的视图。然后你可以写
//Creating the instance of PopupMenu
PopupMenu popup = new PopupMenu(MainActivity.this, button1);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.popup_menu,popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MainActivity.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show();
return true;
}
});
popup.show();//showing popup menu
有关详细信息,请参阅http://www.androidhive.info/2011/09/how-to-create-android-menus/