DrawerLayout使用

来源:互联网 发布:人工智能从入门到精通 编辑:程序博客网 时间:2024/06/05 00:34
DrawerLayout:是ViewGroup的子类,android:layout_gravity控制抽屉的位置left or right(or start/end)
内容视图作为抽屉的第一个元素,宽高都是(match_parent),没有layout_gravity
抽屉视图在内容视图之后,设置android:layout_gravity值,高度match_parent,高度固定(最后在200dp左右)


1.获取ActionBar(getSupportActionBar());


2.设置回退图标显示actionBar.setDisplayHomeAsUpEnable(true);


3.获取布局文件中的抽屉对象(drawerLayout = findViewById(R.id.drawerLayout))


4.创建一个对象关联到ActionBar上
//参数1:和抽屉关联的Activity(Activity必须持有ActionBar)
//参数2:于Activity的ActionBar相关联的抽屉
//参数3:打开抽屉的字符描述(没有多大意义)
//参数4:打开抽屉的字符描述(没有多大意义)
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawerLayout,R.string.app_name,R.string.app_name);


5.设置抽屉监听
drawerLayout.setDrawerListener(toggle);


6.重要:同步ActionBar上抽屉开关不同状态
toggle.syncState();



DrawerLayout上的重要方法:
1.closeDrawer(Gravity.LEFT)//收回抽屉(其中的参数表示是哪边的抽屉)
2.openDrawer(Gravity.LEFT)//打开抽屉(其中参数表示是哪边抽屉)
3.isDrawerOpen(Gravity.LEFT)//判断抽屉是否打开(其中参数表示是哪边抽屉)



DrawerLayout:


1.位于android.support.v4.widget.DrawerLayout 中


2.是ViewGroup的子类,容器


3.Drawer抽屉可以被拉出来展示(内容和导航的边界区域可拉出来展示)


4.android:layout_gravity控制抽屉的位置left or right (or start/end)


5.内容视图作为抽屉的第一个元素,宽和高(match_parent),没有layout_gravity
6.抽屉视图在内容视图之后,设置android:layout_gravity值,高度match_parent,宽度固定值(不能大于320dp)




ActionBar结合DrawerLayout的使用步骤如下:


1.xml:
 
1》布局文件以android.support.v4.widget.DrawerLayout为根元素,指明id
 
2》内容视图必须作为抽屉的第一个元素,宽和高沾满整个屏幕
 
3》视图导航在内容视图之后设置,用android:layout_gravity指定抽屉方向,宽度固定值不大于320dp,高度match_parent


2.java代码:
 
1》查找DrawerLayout控件;
 
2》获取ActionBar的对象,显示home箭头(setDisplayHomeAsUpEnabled(true))
    在public boolean onOptionsItemSelected(MenuItem item)根据id(android.R.id.home)获取箭头按钮,设置是开启抽屉还是关闭抽屉
 
3》补充(ActionBar结合抽屉实现home箭头旋转切换图标):
     
1.设置抽屉的监听setDrawerListener(ActionBarDrawerToggle toggle);
     
2.使用ActionBarDrawerToggle对象调用syncState();




总结:
DrawerLayout它可以和ToolBar和ActionBar绑定到一起(ActionBarDrawerToggle)
如果是ActionBar只需在onCreate方法获取getSupportActionBar。而ToolBar则需要你先取消ActionBar再在onCreate显示(findViewById)来获取
内容和侧滑左边的布局都必须写入到DrawerLayout中即在这标签里面
注意 1.先写内容布局再写侧滑布局 2.侧滑布局需要利用layout_gravity来指定它显示实在左边还是右边lef(start)或right(end)
0 0
原创粉丝点击