DrawerLayout的使用

本文介绍如何使用DrawerLayout实现侧滑菜单,包括布局设置、监听事件处理等。通过实例演示了侧滑菜单的打开与关闭,以及与ToolBar的交互。

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

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

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

布局截图
这里写图片描述

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

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

http://blog.youkuaiyun.com/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值