2016-02-08 60 views
0

我有一個帶導航視圖的drawerLayout(support.v4),並有許多菜單項(如多達n個菜單項)。要同時在屏幕上顯示較少的項目,某些菜單項會導致包含多項內容的另一個菜單。等到DrawerLayout動畫完成

事情是,我的菜單開關工作正常,我可以從一個菜單傳遞給另一個,但我沒有動畫...我想關閉抽屜時,鏈接到另一個菜單的項目被選中一旦菜單被加載,再次打開它。

這裏是我的代碼:

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem selectedItem) { 
      mDrawerLayout.closeDrawer(GravityCompat.START); 
      Log.d(MainActivity.class.getName(), selectedItem.toString()); 
      MobileXMLMenu menu = UserMenu.getInstance().getMenu(); 
      for(int i = 0; i < menu.sizeMenuItems(); i++){ 
       if(menu.getMenuItem(i).getLabel(Utility.retreiveLanguage()).equals(selectedItem.toString())){ 
        Log.d(MainActivity.class.getName(), menu.getMenuItem(i).sizeMenuItems() + ""); 
        if(menu.getMenuItem(i).sizeMenuItems() > 0){ 

         Menu nMenu = navigationView.getMenu(); 
         nMenu.clear(); 
         for(int j = 0; j < menu.getMenuItem(i).sizeMenuItems(); j++){ 
          MobileXMLMenuItem item = menu.getMenuItem(i).getMenuItem(j); 
          nMenu.add(item.getLabel(Utility.retreiveLanguage())).setIcon(MemberOptionsManager.getInstance().getMenuItemIcon(item.getDecorator())); 
         } 
         mDrawerLayout.openDrawer(GravityCompat.START); 
         isInSubmenu = true; 
        } 
       } 
      } 
      return false; 
     } 
    }); 

我也有這個我ActionBarDrawerToggle(不知道這是否能幫助):

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close){ 
     public void onDrawerClosed(View view){ 
      super.onDrawerClosed(view); 
      getSupportActionBar().setTitle(mFragment.getFragmentName()); 
      invalidateOptionsMenu(); 
      mDrawerToggle.syncState(); 
     } 
     public void onDrawerOpened(View drawerView){ 
      super.onDrawerClosed(drawerView); 
      getSupportActionBar().setTitle("Open"); 
      invalidateOptionsMenu(); 
      mDrawerToggle.syncState(); 
     } 
    }; 

當我選擇一個項目不鏈接到任何子菜單中,抽屜關閉,但除此之外,我看不到任何動畫,只是菜單內容在沒有動畫的情況下更改。如何強制我的應用程序在更改菜單內容之前等待抽屜關閉?

謝謝!

+0

點擊項目添加延遲到菜單內容的變化?也許像200-300毫秒? –

+0

你必須使用一個處理程序... –

+0

我已經添加了一些代碼,它可以幫助你嗎? – dequec64

回答

0

您可以在DrawLayout setDrawerListener這樣

 ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, mDrawerLayout, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { 
      public void onDrawerClosed(View view) { 
       handleClickNavigationItem(mClickedNavigationItem); 
      } 

      public void onDrawerOpened(View drawerView) { 
      } 
     }; 
     mDrawerLayout.setDrawerListener(toggle); 

handleClickNavigationItem方法包含處理導航事件的代碼。

而只是保存onNavigationItemSelected方法

public boolean onNavigationItemSelected(MenuItem item) { 
     mClickedNavigationItem = item.getItemId(); 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
    return true; 
}