我想添加一个子菜单项到我的导航抽屉中,使用我迄今为止的代码来实现这个最简单的方法是什么?

问题描述:

这是我的MainActivity,它有我的导航抽屉。是否像添加子菜单项到抽屉菜单XML或导航抽屉视图一样简单。或者是,我将不得不使用可扩展列表视图在我的代码中将其添加到programmaticaly中。任何帮助将不胜感激。当我点击导航抽屉上的项目时,我想让它下拉到更多选择?我想添加一个子菜单项到我的导航抽屉中,使用我迄今为止的代码来实现这个最简单的方法是什么?

public class MainActivity extends AppCompatActivity { 
    DrawerLayout drawerLayout; 
    Toolbar toolbar; 
    ActionBarDrawerToggle actionBarDrawerToggle; 
    FragmentTransaction fragmentTransaction; 
    NavigationView navigationView; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close); 

     drawerLayout.addDrawerListener(actionBarDrawerToggle); 
     fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.add(R.id.main_container, new HomeFragment()); 
     fragmentTransaction.commit(); 
     getSupportActionBar().setTitle("Drift Fan"); 
     navigationView = (NavigationView) findViewById(R.id.navigation_view); 
     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem item) { 
       switch (item.getItemId()) { 
        case R.id.Home: 
         fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
         fragmentTransaction.replace(R.id.main_container, new HomeFragment()); 
         fragmentTransaction.commit(); 
         getSupportActionBar().setTitle("Home Fragment"); 
         item.setCheckable(true); 
         drawerLayout.closeDrawers(); 
         break; 
        case R.id.my_account: 
         fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
         fragmentTransaction.replace(R.id.main_container, new myAccountFragment()); 
         fragmentTransaction.commit(); 
         getSupportActionBar().setTitle("My Account"); 
         item.setCheckable(true); 
         drawerLayout.closeDrawers(); 
         break; 
        case R.id.nav_about: 
         fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
         fragmentTransaction.replace(R.id.main_container, new AboutDriftingFragment()); 
         fragmentTransaction.commit(); 
         getSupportActionBar().setTitle("About Drifting"); 
         item.setCheckable(true); 
         drawerLayout.closeDrawers(); 
         break; 
        case R.id.nav_shop: 
         fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
         fragmentTransaction.replace(R.id.main_container, new ShopFragment()); 
         fragmentTransaction.commit(); 
         getSupportActionBar().setTitle("Shop"); 
         item.setCheckable(true); 
         drawerLayout.closeDrawers(); 
         break; 
        case R.id.nav_news: 
         fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
         fragmentTransaction.replace(R.id.main_container, new NewsFragment()); 
         fragmentTransaction.commit(); 
         getSupportActionBar().setTitle("News"); 
         item.setCheckable(true); 
         drawerLayout.closeDrawers(); 
         break; 
       } 


       return false; 
      } 

     }); 

    } 

    @Override 
    protected void onPostCreate(@Nullable Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     actionBarDrawerToggle.syncState(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater menuInflater = getMenuInflater(); 
     menuInflater.inflate(R.menu.drawer_menu, menu); 
     return true; 



    } 
} 

下面是布局文件,抽屉菜单布局,我有我的物品。

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 


    <group android:id="@+id/group7"> 
     <item android:id="@+id/Home" android:title="Home"></item>> 
    </group> 
    <group android:id="@+id/group6"> 
     <item android:id="@+id/my_account" android:title="My Account"></item> 
    </group> 
    <group android:id="@+id/group5"> 
     <item android:id="@+id/nav_news" android:title="News"></item> 
    </group> 
    <group android:id="@+id/group1"> 
     <item android:id="@+id/nav_live" android:title="Live"></item> 
    </group> 
    <group android:id="@+id/group2"> 
     <item android:id="@+id/nav_media" android:title="Media"></item> 
    </group> 
    <group android:id="@+id/group3"> 
     <item android:id="@+id/nav_calendar" android:title="Calendar"></item> 
    </group> 
    <group android:id="@+id/group4"> 
     <item android:id="@+id/nav_results" android:title="Results"></item> 
    </group> 
    <group android:id="@+id/group8"> 
     <item android:id="@+id/nav_about" android:title="About Drifting"></item> 
    </group> 
    <group android:id="@+id/group9"> 
     <item android:id="@+id/nav_shop" android:title="Shop"></item> 
    </group> 
    <group android:id="@+id/group10"> 
     <item android:id="@+id/nav_socialmedia" android:title="SocialMedia"></item> 
    </group> 
    <group android:id="@+id/group11"> 
     <item android:id="@+id/nav_fanzone" android:title="Fanzone"></item> 
    </group> 
    <group android:id="@+id/group12"> 
     <item android:id="@+id/nav_map" android:title="Navigation to Event"></item> 
    </group> 


</menu> 

下面是我的活动主要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:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" 
    android:id="@+id/drawer_layout"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     <include 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      layout="@layout/toolbar_layout" 

      /> 
     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/main_container"> 

     </FrameLayout> 

    </LinearLayout> 

    <android.support.design.widget.NavigationView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/navigation_view" 
     android:layout_gravity="start" 
     android:background="#000" 
     app:itemTextColor="@color/colorPrimary" 
     app:itemIconTint="#fff" 
     app:menu="@menu/drawer_menu" 
     app:theme="@style/NavigationViewStyle" 
     app:headerLayout="@layout/navigation_drawer_header"> 

    </android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

尝试在菜单布局添加此文件:

<item android:title="Submenu title"> 
     <menu> 
      <item 
       android:id="@+id/navigation_submenu_1" 
       android:title="submenutitle1" 
       android:icon="@drawable/ic_timer_auto_black_36dp"/> 

      <item 
       android:id="@+id/navigation_submenu_2" 
       android:title="submenutitle2" 
       android:icon="@drawable/ic_close_black_36dp"/> 

     </menu> 
    </item> 

所以你菜单是像这样:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 


    <group android:id="@+id/group7"> 
     <item android:id="@+id/Home" android:title="Home"></item>> 
    </group> 
    <group android:id="@+id/group6"> 
     <item android:id="@+id/my_account" android:title="My Account"></item> 
    </group> 
    <group android:id="@+id/group5"> 
     <item android:id="@+id/nav_news" android:title="News"></item> 
    </group> 
    <group android:id="@+id/group1"> 
     <item android:id="@+id/nav_live" android:title="Live"></item> 
    </group> 
    <group android:id="@+id/group2"> 
     <item android:id="@+id/nav_media" android:title="Media"></item> 
    </group> 
    <group android:id="@+id/group3"> 
     <item android:id="@+id/nav_calendar" android:title="Calendar"></item> 
    </group> 
    <group android:id="@+id/group4"> 
     <item android:id="@+id/nav_results" android:title="Results"></item> 
    </group> 
    <group android:id="@+id/group8"> 
     <item android:id="@+id/nav_about" android:title="About Drifting"></item> 
    </group> 
    <group android:id="@+id/group9"> 
     <item android:id="@+id/nav_shop" android:title="Shop"></item> 
    </group> 
    <group android:id="@+id/group10"> 
     <item android:id="@+id/nav_socialmedia" android:title="SocialMedia"></item> 
    </group> 
    <group android:id="@+id/group11"> 
     <item android:id="@+id/nav_fanzone" android:title="Fanzone"></item> 
    </group> 
    <group android:id="@+id/group12"> 
     <item android:id="@+id/nav_map" android:title="Navigation to Event"></item> 
    </group> 

<item android:title="Submenu title"> 
      <menu> 
       <item 
        android:id="@+id/navigation_submenu_1" 
        android:title="submenutitle1" 
        android:icon="@drawable/ic_timer_auto_black_36dp"/> 

       <item 
        android:id="@+id/navigation_submenu_1" 
        android:title="submenutitle2" 
        android:icon="@drawable/ic_close_black_36dp"/> 

      </menu> 
     </item> 


</menu>