2016-12-08 61 views
-1

我想在Navigation Drawer(如this)中添加滑块下拉菜单。在导航抽屉中添加滑块菜单

点击左侧图标后,显示如this

可以做些什么呢?

+0

到目前为止,你已经尝试过什么? –

+0

我想在我的项目中添加这件事 – prem

+0

检查我的答案 –

回答

1

这是抽屉式导航与ExpandableListview

public class MainActivity extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 
    private ActionBarDrawerToggle mDrawerToggle; 
    private String mActivityTitle; 
    private String[] items; 

    private ExpandableListView mExpandableListView; 
    private ExpandableListAdapter mExpandableListAdapter; 
    private List<String> mExpandableListTitle; 
    private NavigationManager mNavigationManager; 

    private Map<String, List<String>> mExpandableListData; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mActivityTitle = getTitle().toString(); 

     mExpandableListView = (ExpandableListView) findViewById(R.id.navList); 
     mNavigationManager = FragmentNavigationManager.obtain(this); 

     initItems(); 

     LayoutInflater inflater = getLayoutInflater(); 
     View listHeaderView = inflater.inflate(R.layout.nav_header, null, false); 
     mExpandableListView.addHeaderView(listHeaderView); 

     mExpandableListData = ExpandableListDataSource.getData(this); 
     mExpandableListTitle = new ArrayList(mExpandableListData.keySet()); 

     addDrawerItems(); 
     setupDrawer(); 

     if (savedInstanceState == null) { 
      selectFirstItemAsDefault(); 
     } 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
    } 

    private void selectFirstItemAsDefault() { 
     if (mNavigationManager != null) { 
      String firstActionMovie = getResources().getStringArray(R.array.actionFilms)[0]; 
      mNavigationManager.showFragmentAction(firstActionMovie); 
      getSupportActionBar().setTitle(firstActionMovie); 
     } 
    } 

    private void initItems() { 
     items = getResources().getStringArray(R.array.film_genre); 
    } 

    private void addDrawerItems() { 
     mExpandableListAdapter = new CustomExpandableListAdapter(this, mExpandableListTitle, mExpandableListData); 
     mExpandableListView.setAdapter(mExpandableListAdapter); 
     mExpandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 
      @Override 
      public void onGroupExpand(int groupPosition) { 
       getSupportActionBar().setTitle(mExpandableListTitle.get(groupPosition).toString()); 
      } 
     }); 

     mExpandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { 
      @Override 
      public void onGroupCollapse(int groupPosition) { 
       getSupportActionBar().setTitle(R.string.film_genres); 
      } 
     }); 

     mExpandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
      @Override 
      public boolean onChildClick(ExpandableListView parent, View v, 
             int groupPosition, int childPosition, long id) { 
       String selectedItem = ((List) (mExpandableListData.get(mExpandableListTitle.get(groupPosition)))) 
        .get(childPosition).toString(); 
       getSupportActionBar().setTitle(selectedItem); 

       if (items[0].equals(mExpandableListTitle.get(groupPosition))) { 
        mNavigationManager.showFragmentAction(selectedItem); 
       } else if (items[1].equals(mExpandableListTitle.get(groupPosition))) { 
        mNavigationManager.showFragmentComedy(selectedItem); 
       } else if (items[2].equals(mExpandableListTitle.get(groupPosition))) { 
        mNavigationManager.showFragmentDrama(selectedItem); 
       } else if (items[3].equals(mExpandableListTitle.get(groupPosition))) { 
        mNavigationManager.showFragmentMusical(selectedItem); 
       } else if (items[4].equals(mExpandableListTitle.get(groupPosition))) { 
        mNavigationManager.showFragmentThriller(selectedItem); 
       } else { 
        throw new IllegalArgumentException("Not supported fragment type"); 
       } 

       mDrawerLayout.closeDrawer(GravityCompat.START); 
       return false; 
      } 
     }); 
    } 

    private void setupDrawer() { 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { 

      /** Called when a drawer has settled in a completely open state. */ 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 
       getSupportActionBar().setTitle(R.string.film_genres); 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      } 

      /** Called when a drawer has settled in a completely closed state. */ 
      public void onDrawerClosed(View view) { 
       super.onDrawerClosed(view); 
       getSupportActionBar().setTitle(mActivityTitle); 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      } 
     }; 

     mDrawerToggle.setDrawerIndicatorEnabled(true); 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     // Activate the navigation drawer toggle 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

更多看到这个https://github.com/msahakyan/expandable-navigation-drawer