Android SwitchCompat在NavigationView';隐藏子菜单时,单击“打开”菜单

Android SwitchCompat在NavigationView';隐藏子菜单时,单击“打开”菜单,android,android-appcompat,navigationview,switchcompat,Android,Android Appcompat,Navigationview,Switchcompat,我有一个导航视图,里面有通常的菜单。我添加了两个项:一个常规项和一个包含xml定义中的SwitchCompat的操作视图,以及一个子菜单,其中包含代码中的几个项。这个很好用 我在开关上使用setoncheckedchangedlistener检查其状态何时更改,如果设置为打开,则隐藏子菜单(catMenu): 隐藏/显示功能正常,但开关兼容的动画设置不正确。它会改变颜色,但开关不会移到右侧。我可以手动将其滑到那里,但不能滑回 如果我从事件内的菜单中删除子菜单,也会发生同样的情况。所以我认为对

我有一个
导航视图
,里面有通常的
菜单
。我添加了两个项:一个常规项和一个包含xml定义中的
SwitchCompat
的操作视图,以及一个子菜单,其中包含代码中的几个项。这个很好用

我在开关上使用
setoncheckedchangedlistener
检查其状态何时更改,如果设置为打开,则隐藏子菜单(
catMenu
):

隐藏/显示功能正常,但
开关兼容
的动画设置不正确。它会改变颜色,但开关不会移到右侧。我可以手动将其滑到那里,但不能滑回

如果我从事件内的菜单中删除子菜单,也会发生同样的情况。所以我认为对菜单的任何篡改都会导致动画出现问题

我是做错了什么,还是兼容性库中有一个bug?有没有其他方法可以根据选择隐藏子菜单


我使用的是appcompat-v7的23.1.1版,这确实是一个bug。我也有同样的问题。如果我单击开关本身,它会很好地设置动画,但是如果我在NavigationDrawer打开时更改开关状态,则不会显示动画


Android问题跟踪程序条目见此:

这似乎确实是一个bug。我也有同样的问题。如果我单击开关本身,它会很好地设置动画,但是如果我在NavigationDrawer打开时更改开关状态,则不会显示动画

有关Android问题跟踪器条目,请参见以下内容:

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);
    }
});