2014-03-31 105 views
0

我正在構建可由Android Studio自動生成的NavigationDrawerFragment。它具有在打開抽屜時顯示全局標題和全局菜單(用於操作欄)的功能。它在ActionBarDrawerToggle中使用@overriden方法onDrawerClosedonDrawerOpened執行此操作。導航抽屜剛開始打開時的運行代碼

我的問題是,當抽屜首次打開時,我怎樣才能使上下文切換髮生,而不是當它完全打開時?我注意到gmail應用程序執行此操作。

回答

1

您可以在您的ActionBarToggle中覆蓋DrawerLayout.DrawerListener.onDrawerStateChanged,並在那裏致電Activity.invalidateOptionsMenu。如果您想更準確地使菜單無效,可以將newState參數與DrawerLayout.STATE_IDLE,DrawerLayout.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); 
} 
+0

完美。我用後一種方法去了。 – theblang