隐藏SubMenu时,SwitchCompat菜单中的SwitchCompat无法正确设置动画

时间:2016-06-05 09:27:30

标签: android android-appcompat navigationview switchcompat

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

enter image description here

我在交换机上使用setOnCheckedChangeListener检查其状态是否发生变化,如果设置为on,则隐藏子菜单(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没有正确设置动画。它会改变颜色,但开关不会移动到右侧。我可以在那里手动滑动,但不能回来。

enter image description here

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

我做错了什么或是兼容库中的错误?是否有其他方法可以根据选择隐藏子菜单?

我正在使用appcompat-v7的第23.1.1版

1 个答案:

答案 0 :(得分:0)

这确实是一个错误。我也有同样的问题。如果我单击Switch本身它会动画很好但如果我在NavigationDrawer打开时更改了开关状态则没有动画。

请参阅此问题以获取Android问题跟踪器条目:SwitchCompat.setChecked does not animate inside RecyclerView