我正在构建可由Android Studio自动生成的NavigationDrawerFragment
。它具有在打开抽屉时显示全局标题和全局菜单(用于操作栏)的功能。它使用@overriden方法ActionBarDrawerToggle
和onDrawerClosed
在onDrawerOpened
中执行此操作。
我的问题是,当抽屉第一次开始打开而不是完全打开时,如何进行上下文切换?我注意到gmail
应用程序执行此操作。
答案 0 :(得分:1)
您可以覆盖ActionBarToggle
中的DrawerLayout.DrawerListener.onDrawerStateChanged
,并在那里拨打Activity.invalidateOptionsMenu
。如果您想更精确地使菜单无效,可以将newState
参数与DrawerLayout.STATE_IDLE
,DrawerLayout.STATE_DRAGGING
或DrawerLayout.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);
}