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

时间:2013-12-30 15:52:17

标签: android actionbarsherlock android-support-library navigation-drawer

按下选项菜单按钮时,我希望导航抽屉打开。因此,在我的Sherlock Fragment活动中,我添加了:

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

由于某些原因,按下选项菜单按钮时没有任何反应。

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

2 个答案:

答案 0 :(得分:27)

也许您指的是onKeyDown (int keyCode, KeyEvent event)

样品:

@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);
}

答案 1 :(得分: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);
}

其中mDrawerLayout是父活动布局,drawerView活动布局中抽屉的子视图(列表或smth。)