Open navigation drawer when options menu button is pressed

五迷三道 提交于 2019-12-05 19:52:57

问题


I'd like the navigation drawer opened when the options menu button is pressed. So in my Sherlock Fragment activity I added:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mDrawerLayout.isDrawerOpen(mDrawerLinear)) {
        mDrawerLayout.openDrawer(mDrawerLinear);
    }
    return true;
}

For some reason nothing happens when the options menu button is pressed.

Otherwise the drawer is working fine. It opens when the app icon on the action bar is pressed or when I pull it. So what's wrong?


回答1:


Maybe your referring to onKeyDown (int keyCode, KeyEvent event)

sample:

@Override
public boolean onKeyDown(int keyCode, KeyEvent e) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        // your action...

        if (!mDrawerLayout.isDrawerOpen(mDrawerLinear)) {
            mDrawerLayout.openDrawer(mDrawerLinear);
        }
        return true;
    }
    return super.onKeyDown(keyCode, e);
}



回答2:


The answer above is good, I just want to add some clarification (open/close version):

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_MENU) {

        View drawerView = findViewById(R.id.navigation_drawer); // child drawer view

        if (!mDrawerLayout.isDrawerOpen(drawerView)) {
            mDrawerLayout.openDrawer(drawerView);
        } else if (mDrawerLayout.isDrawerOpen(drawerView)) {
            mDrawerLayout.closeDrawer(drawerView);
        }
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Where mDrawerLayout is the parent activity layout and drawerView the child view for the drawer inside the activity layout (list or smth.)



来源:https://stackoverflow.com/questions/20842849/open-navigation-drawer-when-options-menu-button-is-pressed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!