按下选项菜单按钮时打开导航栏

Fro*_*yon 9 android actionbarsherlock android-support-library navigation-drawer

我想按下选项菜单按钮时打开导航抽屉.所以在我的Sherlock Fragment活动中我添加了:

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

出于某种原因,按下选项菜单按钮时没有任何反应.

否则抽屉工作正常.当按下操作栏上的应用程序图标或我拉动它时,它会打开.那有什么不对?

小智 27

也许你指的是onKeyDown(int keyCode,KeyEvent事件)

样品:

@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);
}
Run Code Online (Sandbox Code Playgroud)


And*_*rey 10

上面的答案很好,我只想补充一些说明(开/关版):

@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);
}
Run Code Online (Sandbox Code Playgroud)

mDrawerLayout活动布局中的父级活动布局和drawerView抽屉的子视图在哪里(列表或smth.)