1

我有一个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 版本

4

1 回答 1

0

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

有关 Android 问题跟踪器条目,请参阅此内容:SwitchCompat.setChecked 在 RecyclerView 内不设置动画

于 2016-09-01T00:32:18.500 回答