2015-09-25 170 views
0

我正在使用android.support.design.widget.NavigationView。在此视图的生命周期中,菜单项会动态更改(删除,重命名和添加)。但是,这些更改不会直接显示,而只能在视图被销毁并重新创建后(例如,在方向更改时)。NavigationView:将菜单标记为脏

有没有办法强制它更新菜单?

回答

1

将动态菜单添加到NavigationView目前是设计支持库上的错误。而且我看到有人已经将它报告给android bug源跟踪。所以等到bug修复。但如果你想要临时解决方案,你可以做到。首先添加动态菜单..

navView = (NavigationView) findViewById(R.id.navView); 
Menu m = navView.getMenu(); 
SubMenu topChannelMenu = m.addSubMenu("Top Channels"); 
topChannelMenu.add("Foo"); 
topChannelMenu.add("Bar"); 
topChannelMenu.add("Baz"); 

加入你的菜单只写了下面的代码后..

MenuItem mi = m.getItem(m.size()-1); 
mi.setTitle(mi.getTitle()); 

https://code.google.com/p/android/issues/detail?id=176300

+0

不幸的是这并没有我的情况下工作;我有三个从xml构建的菜单,我以编程方式添加和删除项目。按照建议设定标题并不会强制子菜单重新绘制;我发现的另一个解决方案是在导航菜单中添加另一个临时子菜单并再次将其删除,但不幸的是,这种解决方案也无济于事。 – heyarne

相关问题