Android开发之DrawerLayout与ToolBar之间不得不说的秘密
来源:互联网 发布:东湖高新人工智能峰会 编辑:程序博客网 时间:2024/06/05 00:52
上一章节谈到了DrawerLayout的简单使用,本章节就探讨下DrawerLayout与ToolBar之间能擦出什么样的火花,翻看文档不难免发现ToolBar是v7包下的一个组件,和ActionBar有着同样的效果,但是要比ActionBar好用,兼容性更强,定制效果更好(这里不做过多讲解)等等!
----------------------------------------分割线---------------------------------------------------------------------------
如图所示:
----------------------------------------分割线----------------------------------------------------------------------------
首先在布局中内容布局里加入ToolBar布局:
<!--内容部分的布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="我是内容部分" /> </LinearLayout>
然后将actionbar替换成toolbar:
setSupportActionBar(toolbar);接着调用ActionBarDrawerToggle将drawerlayout和toolbar绑定在一起,并调出隐藏的按钮图标:
ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close);在这里会有一个小坑,就是R.string.drawer_open,不知道该怎么设置,翻阅源码才明白,仅仅是个字符串,为了作为标记而存在,在strings文件里加入如下代码如下:
<resources> <string name="drawer_open">open</string> <string name="drawer_close">close</string></resources>添加动画效果:
drawerLayout.setDrawerListener(drawerToggle);
最后同步一下:
drawerToggle.syncState();大功告成!
----------------------------------------分割线----------------------------------------------------------------------------
在这里自己给自己提出个疑问,抽屉能不能别把toolBar盖住?实现下面的效果?
实现方式就是把最外层用LinearLayout,设置成Vertical,次层两个布局一个是ToolBar布局,另一个是DrawerLayout,然后在Drawerlayout里面再设置内容和侧滑栏的布局,下面给出详细代码:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.fly.dl01.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" /> <android.support.v4.widget.DrawerLayout android:id="@+id/drawerlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <!--内容部分的布局--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="我是内容部分" /> </LinearLayout> <!--侧滑栏左边的布局--> <LinearLayout android:layout_width="200dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#0f0" android:orientation="vertical" android:paddingTop="50dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ff0" android:text="item1" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ff0" android:text="item2" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ff0" android:text="item3" /> </LinearLayout> </android.support.v4.widget.DrawerLayout></LinearLayout>
ok,两种显示效果都已经贴出来了,萝卜青菜各有所爱!
----------------------------------------彩蛋----------------------------------------------------------------------------
其实我们也可以监听drawerLayout的状态,废话少说贴出代码:
//设置监听 drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() { @Override public void onDrawerSlide(View drawerView, float slideOffset) { //滑动过程中不断回调 } @Override public void onDrawerOpened(View drawerView) { //打开 } @Override public void onDrawerClosed(View drawerView) { //关闭 } @Override public void onDrawerStateChanged(int newState) { //状态发生改变 } });下一节讲针对此监听对DrawerLayout进一步了解。
- Android开发之DrawerLayout与ToolBar之间不得不说的秘密
- Android开发之DrawerLayout与NavigationView之间不得不说的基友情
- Android NDK不得不说的秘密
- 与android不得不说的故事之KJFrameForAndroid
- mvc与三层架构不得不说的秘密
- Mysql与cmd不得不说的秘密
- DrawerLayout与ToolBar之双宿双飞
- 魔镜告诉我芙蓉姐姐与古天乐不得不说的秘密
- 局部变量与成员变量不得不说的秘密!
- 我与户外充气帐篷不得不说的秘密
- HR8P506,FLASH的IAP操作与RAM不得不说的秘密
- 银联与微支不得不说的秘密
- JavaScript操作iframe之不得不说的秘密(一)
- JavaScript操作iframe之不得不说的秘密(一)
- 浅谈Android中 Handler、Looper、Message不得不说的秘密
- IE9:九个不得不说的秘密
- AR技术不得不说的秘密
- Android控件之Toolbar + DrawerLayout的使用
- python 机器学习-sklearn基本功能
- 关于java关键字finally的浅入的个人理解
- 第七届蓝桥杯决赛JavaB组第二题_反幻方
- hdu 2084 数塔
- 无向图的割点、桥与双连通分量
- Android开发之DrawerLayout与ToolBar之间不得不说的秘密
- python编码问题
- 极光推送
- Java反射机制==>运行时使用反射分析对象
- JavaScript单线程异步的背后——事件循环机制
- Implement regular expression matching with support for '.' and '*'.
- activity的启动模式有哪些?是什么含义?(一)
- 【暴力模拟】二阶魔方旋转
- 利用RadioGroup嵌套RadioButton实现Android主页面底部导航栏动态设置图片大小