欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DrawerLayout的使用

程序员文章站 2022-06-30 14:20:37
...

这篇讲解DrawerLayout的使用,主要是对布局的设置,侧滑菜单栏的打开和关闭的监听进行操作的,下面是运行程序的截图
DrawerLayout的使用

从运行效果来看,中间是一个TextView,我看很多讲解在那里都喜欢放Fragment,但是我比较懒。。。。。。

左边是从侧滑出来的ListView布局

布局截图
DrawerLayout的使用

图片上的几个点都被标明了

比较重点的是:
1.android:layout_gravity=”start”
这个属性代表着是从左侧拉出菜单还是右侧(end)
2.DrawerLayout布局下第一个子View为中间区域的布局,后面的子View分别为左滑菜单或者右滑菜单
在Activity中操作布局
省略ToolBar的解释,具体操作可以看

http://blog.csdn.net/github_36731706/article/details/72874437

toolbar = (Toolbar) findViewById(R.id.main_toll_bar);
        title= (String) getTitle();
        toolbar.setTitle(title);
        //   toolbar.setSubtitle("我是子标题");
        //设置导航栏
        toolbar.setNavigationIcon(R.drawable.menu);

toolBar菜单图标的点击事件

 //菜单被点击之后
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                if (drawer_layout.isDrawerOpen(Gravity.START)){
                    toolbar.setNavigationIcon(R.drawable.back);
                }else {
                    toolbar.setNavigationIcon(R.drawable.menu);
                }
                return false;
            }
        });

侧滑菜单中ListView的内容填充

private String [] str=new String[]{"条目一","条目二","条目三","条目四"};
left_list= (ListView) findViewById(R.id.main_left_lv);
        left_list.setAdapter(new ArrayAdapter<String>(this,
        //一个根布局为TextView的布局
                R.layout.drawer_layout_item,
                str
                ));
        //左边菜单被点击的时候,菜单就被收回
        left_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this,str[position],Toast.LENGTH_LONG).show();
                //关闭左侧策划菜单
                drawer_layout.closeDrawer(left_list);
                title=str[position];
            }
        });

最后就是对DrawerLayout的实例化和监听事件了

//实例化布局
 drawer_layout = (DrawerLayout) findViewById(R.id.main_drawer_layout);

在对侧滑菜单的打开和关闭,从运行效果来看,侧滑打开时,tooBar的图标为返回图标,关闭时图标为菜单图标,并获取点击条目的内容显示在标题上,这里用的是

 drawer_layout.addDrawerListener(drawerToggle);

对打开和关闭的监听。参数传入ActionBarDrawerToggle类。

下面是对ActionBarDrawerToggle的详解,怎么使用ActionBarDrawerToggle

 //滑动时图标的转换(当前,DrawerLayout布局对象,toolbar控件对象,打开和关闭的内容),最后两个参数用处不是很大,简单设置一下

<string name="draw_open">Drawer Open</string>
    <string name="draw_close">Drawer Close</string>


        drawerToggle = new ActionBarDrawerToggle(this,
                drawer_layout,
                toolbar,
                R.string.draw_open,
                R.string.draw_close
        ) {
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                toolbar.setTitle(title);
                toolbar.setNavigationIcon(R.drawable.back);
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                toolbar.setTitle(title);
                toolbar.setNavigationIcon(R.drawable.menu);
            }

        };

通过上面的操作在代码块中就可以实现对侧滑菜单的开启监听和关闭监听

我实现的效果还是比较简单的,下面是工程的源码:

https://github.com/XuDaHaoRen/DrawerLayoutDemo