如何防止在导航抽屉打开时隐藏ActionBar项目?

时间:2014-09-26 16:38:11

标签: android android-actionbar navigation-drawer

我已经使用ActionBar实现了导航抽屉,其中只有一个项目可以打开导航抽屉。因此Home和菜单项按钮都会打开抽屉。一切正常,没有崩溃。

但是当我点击ActionBar主页按钮或菜单项时,导航抽屉会打开,菜单项将变为不可见

我该怎样防止这种情况?无论抽屉是打开还是关闭,我都希望它始终可见。

我已经尝试了多种解决方案。例如,在抽屉类中,setHasOptionsMenu(true);中调用方法onCreate。然后我将菜单项设置为存在always

然后在主Activity中,我尝试在创建期间捕获菜单项

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    try {
        MenuItem item = menu.getItem(0);
        if (item != null) {
            item.setVisible(true);
        }
    } catch (Exception e) {
        Log.e(TAG, "Error: " + e.getLocalizedMessage());
    }
    return super.onPrepareOptionsMenu(menu);
}

但是当抽屉出现时,menu对象返回0项。

我没有想法。

修改

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mNavigationDrawerFragment.isDrawerOpen()) 
        getMenuInflater().inflate(R.menu.main, menu);
        restoreActionBar();
        return true;
    }
    return super.onCreateOptionsMenu(menu);
}

public void restoreActionBar() {
    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (item != null && id == android.R.id.home) {
        if (mNavigationDrawerFragment.isDrawerOpen(Gravity.RIGHT)) {
            mNavigationDrawerFragment.closeDrawer(Gravity.RIGHT);
        } else {
            mNavigationDrawerFragment.openDrawer(Gravity.RIGHT);
        }
        return true;
    }

    return super.onOptionsItemSelected(item);
}

这是RIGHT-SIDE导航抽屉。

1 个答案:

答案 0 :(得分:1)

这是你的问题

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mNavigationDrawerFragment.isDrawerOpen()) 
        getMenuInflater().inflate(R.menu.main, menu);
        restoreActionBar();
        return true;
    }
    return super.onCreateOptionsMenu(menu);
}

抽屉打开时没有菜单,删除if语句