DrawerLayout实现侧滑菜单

drawerLayout是谷歌官方提供的Support Library包中实现了侧滑菜单效果的控件,具体效果如下图

DrawerLayout实现侧滑菜单_第1张图片
演示图

具体的实现
1.drawerLayout其实是一个布局控件,跟LinearLayout等控件是一种东西,但是drawerLayout带有滑动的功能。只要按照drawerLayout的规定布局方式写完布局,就能有侧滑的效果,所以一般把drawerLayout作为最外层的布局。



        

            
                

                    

                    

                
            

                

        

        

    

为了方便直接套在了上一节由CoordinatorLayout布局包裹的AppBarLayout,CollapsingToolbarLayout做的可折叠的toolbar外面,CoordinatorLayout标签的内容可以随便替换成你想要的主页面布局,侧滑页面的布局主要是由下面的NavigationView决定的。其中侧滑菜单的具体样式又是由引用的子布局决定的:
app:headerLayout="@layout/header_just_username" app:menu="@menu/menu_drawer"

其中headerLayout顾名思义是头布局,而 app:menu则是子菜单,这里顺便给出头布局和子菜单的布局:
头布局header_just_username












子菜单menu_drawer



    
    
    
    



    
        
        
    


好了,看完布局我们再来看一下代码方面的:
在代码里面我自己定义一个名字叫setupDrawerContent方法来设置侧边栏的点击事件,传入的参数是侧边栏的NavigationView

 private void setupDrawerContent(NavigationView navigationView)
{

    navigationView.setNavigationItemSelectedListener(

            new NavigationView.OnNavigationItemSelectedListener()
            {

                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem)
                {
                    //点击响应的事件写在这里
                    mDrawerLayout.closeDrawers();//这个方法用来关闭侧边栏
                    return true;
                }
            });
}

如果你把toolbar设置为Actionbar:
setSupportActionBar(toolbar);
则可以通过给左上角图标设置一个返回图标:
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic)
对应ActionBar.DISPLAY_HOME_AS_UP,对应id是android.R.id.home
还可以在onOptionsItemSelected方法里设置左上角图标的点击事件,这里设置的是打开侧滑菜单:

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();

    if(id == android.R.id.home)
    {
        mDrawerLayout.openDrawer(GravityCompat.START);//打开侧滑菜单
        return true ;
    }

    return super.onOptionsItemSelected(item);
}

你可能感兴趣的:(DrawerLayout实现侧滑菜单)