如何在Android NavigationView中显示/隐藏子菜单

3

我希望在导航抽屉中创建类似可扩展列表视图的视图,初始状态只显示主标题(折叠子菜单)。当点击标题时,如果可能应该出现子菜单(并进行动画效果)。

我正在使用android.support.design.widget.NavigationView。 我可以通过xml添加子菜单。

 <group android:checkableBehavior="all">
    <item
        android:id="@+id/action_venues"
        android:title="TITLE 1">
        <menu>
            <group
                android:id="@+id/group1"
                android:checkableBehavior="single"
                >
                <item android:title="SUBTITLE1.1" />
                <item android:title="SUBTITLE1.2" />
                <item android:title="SUBTITLE1.3" />

            </group>
        </menu>
    </item>
    <item
        android:id="@+id/action_vendors"
        android:title="TITLE2">
        <menu>
            <group
                android:id="@+id/group2"
                android:checkableBehavior="single"
                android:visible="false">
                <item android:title="SUBTITLE2.1" />
                <item android:title="SUBTITLE2.2" />
                <item android:title="SUBTITLE2.3" />

            </group>
        </menu>
    </item>

但如果我在XML中将任何组保持为android:visible="false",则它不会出现在抽屉中。

我还尝试通过编程方式显示/隐藏子菜单:

subMenu1.setGroupVisible(R.id.group1,false);

但是它也隐藏了标题菜单。

使用android.support.design.widget.NavigationView是否可能?还是我必须使用自定义视图?


1
你找到解决方案来使菜单项在可见性改变时进行动画吗? - B W
4个回答

3
    Menu menu = navigationView.getMenu();
    for (int i = 0; i < menu.size(); i++) {

        if (menu.getItem(i).getItemId() != R.id.login){
            menu.getItem(i).setVisible(false);
        }

    }

1
对于组标签,我使用了


navigationView.getMenu().setGroupVisible(false)

对于项目标签,我使用了


navigationView.getMenu().findViewById(R.id.id_of_the_item).setVisibility(View.GONE)

所有工作正常。


1
getMenu() 没有 findViewById() 成员。你能发布运行代码吗? - transistor

1

我通过将标题设置为单独的组来实现了显示/隐藏字幕。不确定这是否是正确的方式:

<group>
    <item
        android:id="@+id/action_venues"
        android:title="group1" />
</group>
<group
    android:id="@+id/group2"
    android:checkableBehavior="single">
     <item android:title="SUBTITLE1.1" />
     <item android:title="SUBTITLE1.2" />
     <item android:title="SUBTITLE1.3" />
</group>

<group>
    <item
        android:id="@+id/action_vendors"
        android:title="group3" />
</group>
<group
    android:id="@+id/group4"
    android:checkableBehavior="single"
    android:visible="false">
    <item android:title="SUBTITLE2.1" />
    <item android:title="SUBTITLE2.2" />
    <item android:title="SUBTITLE2.3" />
</group>

然后在代码中:
 Menu drawerMenu = drawer.getMenu();
 case R.id.action_venues:
   drawerMenu.setGroupVisible(R.id.group2,true);
 case R.id.action_vendors:
   drawerMenu.setGroupVisible(R.id.group4,true);

但仍然无法进行动画。

0

navigationView.getMenu().findItem(R.id.id_of_the_item).setVisible(false)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接