【发布时间】:2016-02-08 16:50:10
【问题描述】:
我有一个抽屉布局 (support.v4) 和一个导航视图,并且有很多(比如最多 n 个菜单项)菜单项。为了同时在屏幕上显示较少的项目,一些菜单项会导致另一个菜单项较多。
问题是,我的菜单开关工作正常,我可以从一个菜单传递到另一个菜单,但我没有动画...我想在选择链接到另一个菜单的项目时关闭抽屉并且加载菜单后,再次打开它。
这是我的代码:
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 毫秒?
-
您必须为此使用处理程序...
-
我添加了一些代码,对你有帮助吗?
标签: android menu navigation-drawer navigationview