如何在Android中的导航菜单中创build一个子水平?

我想达到这样的效果:

http://mmenu.frebsite.nl/

当你点击文档/教程/支持时,菜单将进入子菜单。 它不是可扩展的列表视图,也不是父菜单标题下面的子菜单项。

我曾尝试使用导航视图创build菜单,如下所示:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_event" android:title="Home" /> <item android:id="@+id/nav_profile" android:icon="@drawable/ic_dashboard" android:title="Perfil" /> </group> <item android:title="More Options"> <menu> <item android:icon="@drawable/ic_forum" android:title="Forum" /> <item android:icon="@drawable/ic_headset" android:title="Headset" /> </menu> </item> </menu> 

问题是,当我点击父菜单标题时,它不能进入​​子菜单。 如何在Android中实现? 非常感谢

Solutions Collecting From Web of "如何在Android中的导航菜单中创build一个子水平?"

我相信,我存档了预期的效果:

在这里输入图像说明

后面的想法是clear()现有的菜单,每次用户点击菜单项时都会重新inflateMenu菜单,这会导致一个子菜单。 (回来 – 做几乎相同)

作为根菜单( activity_main_drawer.xml ),我使用了这个:

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/action_item1" android:icon="@drawable/ic_menu_camera" android:title="Item 1" /> <item android:id="@+id/action_expand" android:icon="@drawable/ic_menu_gallery" android:title="Sub Menu to expand" /> </group> </menu> 

这是一个子菜单( activity_submenu_drawer.xm ):

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Go Back" android:icon="@drawable/ic_back" android:id="@+id/back_to_main"/> <item android:id="@+id/sub_item1" android:icon="@drawable/ic_menu_share" android:title="Subitem 1" /> <item android:id="@+id/sub_item2" android:icon="@drawable/ic_menu_send" android:title="Subitem 2" /> </menu> 

MainActivity.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" /> </android.support.v4.widget.DrawerLayout> 

这里是MainActivity类(它进行切换):

 public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { NavigationView navigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ..... navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.inflateMenu(R.menu.activity_main_drawer); navigationView.setNavigationItemSelectedListener(this); } .... @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.action_expand) { navigationView.getMenu().clear(); navigationView.inflateMenu(R.menu.activity_submenu_drawer); } else if (id == R.id.back_to_main) { navigationView.getMenu().clear(); navigationView.inflateMenu(R.menu.activity_main_drawer); } return true; } } 

我已经将我的testing项目上传到我的保pipe箱 – 随时查看

我希望,这有帮助

我有一个想法是每个菜单项打开另一个片段与过渡。 在下面,导航抽屉只是一个片段内的列表视图权利? 因此从导航抽屉列表的适配器启动另一个片段。

可能是这可以帮助你

子菜单样本

如果我面对这个问题。 那么我会使用整个标题(服装devise)导航抽屉的应用程序。 并添加可扩展的列表视图或其他animation或其他为什么控制这是我的实际要求。

使用自定义导航的优势。 是我们可以根据需要设置devise和function。 如果简单的菜单列表然后击球的方法是使用默认的导航。 抽屉在devise支持库中定义。