我正在構建可由Android Studio自動生成的NavigationDrawerFragment
。它具有在打開抽屜時顯示全局標題和全局菜單(用於操作欄)的功能。它在ActionBarDrawerToggle
中使用@overriden方法onDrawerClosed
和onDrawerOpened
執行此操作。導航抽屜剛開始打開時的運行代碼
我的問題是,當抽屜首次打開時,我怎樣才能使上下文切換髮生,而不是當它完全打開時?我注意到gmail
應用程序執行此操作。
我正在構建可由Android Studio自動生成的NavigationDrawerFragment
。它具有在打開抽屜時顯示全局標題和全局菜單(用於操作欄)的功能。它在ActionBarDrawerToggle
中使用@overriden方法onDrawerClosed
和onDrawerOpened
執行此操作。導航抽屜剛開始打開時的運行代碼
我的問題是,當抽屜首次打開時,我怎樣才能使上下文切換髮生,而不是當它完全打開時?我注意到gmail
應用程序執行此操作。
您可以在您的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);
}
完美。我用後一種方法去了。 – theblang