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 或者我必须使用自定义视图?

4

4 回答 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);
        }

    }
于 2016-01-27T10:41:35.207 回答
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);

但仍然无法动画。

于 2015-09-03T09:23:19.117 回答
1

对于我使用的组标签

navigationView.getMenu().setGroupVisible(false)

对于我使用的项目标签

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

都在工作。

于 2016-08-19T11:12:56.743 回答
0

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

于 2019-10-22T04:33:31.737 回答