点击选项菜单

时间:2015-10-05 04:39:34

标签: android

我有自定义操作栏的活动(基本上是自定义布局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();
    }

2 个答案:

答案 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;
        }
    });

<强>参考: Detecting physical Menu key press in Android

答案 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/