我有一个NavigationView平常的Menu里面。我添加了两项:一项是常规项,其操作视图包含SwitchCompatxml 定义中的 a,另一项是子菜单,其中包含来自代码的多个项。这工作得很好。
我使用setOnCheckedChangeListener开关来检查它的状态何时发生变化,如果它被设置为我隐藏子菜单(catMenu):
final Menu naviMenu = navi.getMenu(); // Already contains the switch element in XML definition
final SubMenu catMenu = naviMenu.addSubMenu("Kategoriat");
final SwitchCompat onlyfavsw = (SwitchCompat)naviMenu.findItem(R.id.nav_onlyfavs).getActionView();
onlyfavsw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
{
catMenu.getItem().setVisible(!b);
}
});
隐藏/显示工作正常,除了SwitchCompat动画不正确。它会改变颜色,但开关不会移动到右侧。我可以在那里手动滑动它,但不能向后滑动。
如果我从事件内的菜单中删除子菜单,也会发生同样的事情。所以我认为对菜单的任何篡改都会导致动画出现问题。
我做错了什么还是兼容性库中的错误?任何其他方式来处理基于选择隐藏子菜单?
我正在使用 appcompat-v7 的 23.1.1 版本

