我有一個帶導航視圖的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();
}
};
當我選擇一個項目不鏈接到任何子菜單中,抽屜關閉,但除此之外,我看不到任何動畫,只是菜單內容在沒有動畫的情況下更改。如何強制我的應用程序在更改菜單內容之前等待抽屜關閉?
謝謝!
點擊項目添加延遲到菜單內容的變化?也許像200-300毫秒? –
你必須使用一個處理程序... –
我已經添加了一些代碼,它可以幫助你嗎? – dequec64