导航抽屉首次开始打开时运行代码

时间:2014-03-31 16:47:04

标签: android navigation-drawer drawerlayout

我正在构建可由Android Studio自动生成的NavigationDrawerFragment。它具有在打开抽屉时显示全局标题和全局菜单(用于操作栏)的功能。它使用@overriden方法ActionBarDrawerToggleonDrawerClosedonDrawerOpened中执行此操作。

我的问题是,当抽屉第一次开始打开而不是完全打开时,如何进行上下文切换?我注意到gmail应用程序执行此操作。

1 个答案:

答案 0 :(得分:1)

您可以覆盖ActionBarToggle中的DrawerLayout.DrawerListener.onDrawerStateChanged,并在那里拨打Activity.invalidateOptionsMenu。如果您想更精确地使菜单无效,可以将newState参数与DrawerLayout.STATE_IDLEDrawerLayout.STATE_DRAGGINGDrawerLayout.STATE_SETTLING进行比较。

同样,您也可以覆盖DrawerLayout.DrawerListener.onDrawerSlide

然后在Activity.onPrepareOptionsMenu中使用DrawerLayout.isDrawerVisible而不是DrawerLayout.isDrawerOpen

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    final boolean drawerVisible = mDrawerLayout.isDrawerVisible(mDrawerList);
    menu.findItem(R.id.your_menu_item_id).setVisible(!drawerVisible);
    return super.onPrepareOptionsMenu(menu);
}