我有一个NavigationView
,其中包含通常的Menu
。我添加了两个项目:一个常规项目,其中包含xml定义中包含SwitchCompat
的操作视图,以及一个包含代码中几个项目的子菜单。这很好用。
我在交换机上使用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
没有正确设置动画。它会改变颜色,但开关不会移动到右侧。我可以在那里手动滑动,但不能回来。
如果我从事件内的菜单中删除子菜单,也会发生同样的事情。所以我认为任何对菜单的篡改都会导致动画问题。
我做错了什么或是兼容库中的错误?是否有其他方法可以根据选择隐藏子菜单?
我正在使用appcompat-v7的第23.1.1版
答案 0 :(得分:0)
这确实是一个错误。我也有同样的问题。如果我单击Switch本身它会动画很好但如果我在NavigationDrawer打开时更改了开关状态则没有动画。
请参阅此问题以获取Android问题跟踪器条目:SwitchCompat.setChecked does not animate inside RecyclerView