android侧边栏菜单DrawerLayout

使用步骤:

1.直接将DrawerLayout作为根布局;

2.设置主页面内容View,宽高应当设置为match_parent;

3.侧菜单View,主要是设置android:layout_gravity=" "属性,left,right左侧和右侧,且一般高度设置为match_parent,宽度为固定值,即侧滑菜单的宽度。

4.DrawerLayout属性

drawerPosition:指定 drawer 将从屏幕的一侧滑动。

drawerWidth :指定 drawer 的宽度,即从窗口的边缘拉到视图更精确的宽度。

keyboardDismissMode :确定键盘是否响应拖动被驳回。

'none' (默认值), 拖动不影响键盘。
'on-drag', 拖动开始,键盘被驳回。

onDrawerClose :导航视图关闭时调用函数。

onDrawerOpen :导航视图打开时调用函数。

onDrawerSlide :与导航视图交互时调用函数。

onDrawerStateChanged :当 Drawer 状态发生变化时调用函数,drawer 有 3 种状态:

 idle -- 表示与导航视图没有交互
 dragging -- 表示目前有与导航视图的交互 
 settling -- 表示有与导航视图的交互,并且导航视图正在的关闭或打开。


5.添加监听器的时候有三种方式:

    a. 设置DrawerLayout.DrawerListener作为监听器类,里面包含四个回调函数:

mDrawerLayout.setDrawerListener(new DrawerListener() {  
        /** 
         * 当抽屉滑动状态改变的时候被调用 
         * 状态值是STATE_IDLE(闲置--0), STATE_DRAGGING(拖拽的--1), STATE_SETTLING(固定--2)中之一。 
         * 抽屉打开的时候,点击抽屉,drawer的状态就会变成STATE_DRAGGING,然后变成STATE_IDLE 
        */  
        @Override  
        public void onDrawerStateChanged(int arg0) {  
            Log.i("drawer", "drawer的状态:" + arg0);  
        }  
        /** 
         * 当抽屉被滑动的时候调用此方法 
         * arg1 表示 滑动的幅度(0-1) 
         */  
        @Override  
        public void onDrawerSlide(View arg0, float arg1) {  
            Log.i("drawer", arg1 + "");  
        }  
        /** 
         * 当一个抽屉被完全打开的时候被调用 
         */  
        @Override  
        public void onDrawerOpened(View arg0) {  
            Log.i("drawer", "抽屉被完全打开了!");  
        }  
        /** 
         * 当一个抽屉完全关闭的时候调用此方法 
         */  
        @Override  
        public void onDrawerClosed(View arg0) {  
            Log.i("drawer", "抽屉被完全关闭了!");  
        }  
    });  

b.设置DrawerListener的子类SimpleDrawerListener,使用这个类的时候不必实现全部的回调函数,可以根据自己的需要重写相应的方法:

mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {  
            @Override  
            public void onDrawerClosed(View drawerView) {  
                super.onDrawerClosed(drawerView);  
            }  
            @Override  
            public void onDrawerOpened(View drawerView) {  
                super.onDrawerOpened(drawerView);  
            }  
        }); 

c.使用DrawerListener的子类ActionBarDrawerToggle。一般与ActionBar结合使用:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,  
                R.drawable.ic_drawer, R.string.drawer_open,  
                R.string.drawer_close) {  
@Override  
public void onDrawerClosed(View drawerView) {  
    getActionBar().setTitle(mTitle);  
    invalidateOptionsMenu();  
}  
@Override  
public void onDrawerOpened(View drawerView) {  
    getActionBar().setTitle(mDrawerTitle);  
    invalidateOptionsMenu();  
    }  
};  
mDrawerLayout.setDrawerListener(mDrawerToggle);  

以下是关键代码:


侧边栏布局:这里设置的是左侧边栏


activity中代码:调用提供的方法openDrawer(),加载侧边栏布局


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值