Android DrawerLayout使用
2017-03-15 14:13
127 查看
说到DrawerLayout,其实并不陌生,查看源码可以发现他是android .support.v4下面的一个组件,那么他究竟是干什么用的呢,说白了就是一个google官方提供的侧滑组件,相信吃瓜落的你已经使用过SlidingMen自定义组件,那么他和SlidingMenu类似,这下你应该懂了吧。
还不懂的看下图:
![](https://img-blog.csdn.net/20170315141907789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVvbnNoaXds/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
好了,那接下来就说说这玩意怎么用了。
其实他的用法还是比较简单的,就像是LinearLayout,RelativeLayout一样使用,然后在内部在定义两部分的布局:1)主界面布局 2)侧滑布局(这块内容包含两块区域:左侧侧滑内容和右侧侧滑内容,但这两块根据需要可以只布局其中一个,或者两个)。其实就这么简单
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--主页面显示的内容布局-->
<RelativeLayoutandroid:id="@+id/content_layout"android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout>
<!--左侧显示的内容-->
<RelativeLayout
android:id="@+id/left_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#ff00ff">
</RelativeLayout>
<!--右侧显示的内容-->
<RelativeLayout
android:id="@+id/right_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="right"
android:background="#ffff00">
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>然后运行起来就可以左右侧滑了,是不是非常简单!!!
其实细心的你会发现,在DrawerLayout中进行主页面和侧滑布局的时候,我是先写的主页面布局
然后再写的侧滑布局(左,右)
好了那么问题来了
我可不可以按照如下的顺序来写呢:左侧侧滑,主页面,右侧侧滑
于是笔者带着这种思路去修改,从左到右写,反正我在左侧的侧滑布局中设置了layout_gravity="left" 那他就应该知道,我没设置的就是主页面。
那么笔者告诉你:
这样写是可以的,而且运行后也是可以滑动的,但是出现的现象是这样的:
1)左侧滑出来的view想要滑回去,就只能点击右边部分没内容的区域,滑动是不起作用的
2)左侧如果是导航菜单,想要更换主页面的内容,也是无法更换的
这样是不是非常的影响用户体验呢?
官方的说法是:
1、DrawerLayout最好为界面的根布局,否则可能会出现触摸事件被屏蔽的问题;
2、主界面布局要放在侧滑布局前面,因为XML顺序意味着按Z序排序(层叠排序)
3、侧滑菜单必须设置layout_gravity属性
至于其他的DrawerLayout设置Listener等,就不在这里废话了,没什么好说的
其实说了一大堆,上面的这三条是比较重要的,笔者曾经为此付出过时间代价。
还不懂的看下图:
好了,那接下来就说说这玩意怎么用了。
其实他的用法还是比较简单的,就像是LinearLayout,RelativeLayout一样使用,然后在内部在定义两部分的布局:1)主界面布局 2)侧滑布局(这块内容包含两块区域:左侧侧滑内容和右侧侧滑内容,但这两块根据需要可以只布局其中一个,或者两个)。其实就这么简单
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--主页面显示的内容布局-->
<RelativeLayoutandroid:id="@+id/content_layout"android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout>
<!--左侧显示的内容-->
<RelativeLayout
android:id="@+id/left_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#ff00ff">
</RelativeLayout>
<!--右侧显示的内容-->
<RelativeLayout
android:id="@+id/right_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="right"
android:background="#ffff00">
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>然后运行起来就可以左右侧滑了,是不是非常简单!!!
其实细心的你会发现,在DrawerLayout中进行主页面和侧滑布局的时候,我是先写的主页面布局
<!--主页面显示的内容布局--> <RelativeLayout android:id="@+id/content_layout" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout>
然后再写的侧滑布局(左,右)
好了那么问题来了
我可不可以按照如下的顺序来写呢:左侧侧滑,主页面,右侧侧滑
于是笔者带着这种思路去修改,从左到右写,反正我在左侧的侧滑布局中设置了layout_gravity="left" 那他就应该知道,我没设置的就是主页面。
那么笔者告诉你:
这样写是可以的,而且运行后也是可以滑动的,但是出现的现象是这样的:
1)左侧滑出来的view想要滑回去,就只能点击右边部分没内容的区域,滑动是不起作用的
2)左侧如果是导航菜单,想要更换主页面的内容,也是无法更换的
这样是不是非常的影响用户体验呢?
官方的说法是:
1、DrawerLayout最好为界面的根布局,否则可能会出现触摸事件被屏蔽的问题;
2、主界面布局要放在侧滑布局前面,因为XML顺序意味着按Z序排序(层叠排序)
3、侧滑菜单必须设置layout_gravity属性
至于其他的DrawerLayout设置Listener等,就不在这里废话了,没什么好说的
其实说了一大堆,上面的这三条是比较重要的,笔者曾经为此付出过时间代价。
相关文章推荐
- Android 使用Drawerlayout仿网易新闻客户端抽屉模式
- Android侧滑菜单之DrawerLayout的使用
- Android:使用Toolbar + DrawerLayout快速实现菜单侧滑
- Android中使用DrawerLayout的注意点
- Android下DrawerLayout的使用
- Android侧滑菜单DrawerLayout的使用
- Android使用DrawerLayout创建左右两个抽屉菜单
- Toolbar,DrawerLayout,PagerSlidingTabStrip,AndroidImageSlider,RecyclerView结合使用
- [AndroidUI]使用DrawerLayout实现侧滑菜单
- Android 使用Drawerlayout仿网易新闻客户端抽屉模式
- Android抽屉 DrawerLayout简单使用
- Android-- 高仿QQ5.2双向侧滑菜单 使用DrawerLayout
- Android使用DrawerLayout创建左右两个抽屉菜单
- Android基础入门教程——2.4.15 DrawerLayout(官方侧滑菜单)的简单使用
- Android使用DrawerLayout创建左右两个抽屉菜单 推荐
- android抽屉DrawerLayout的使用
- Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏
- Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏
- Android下DrawerLayout的使用
- Android DrawerLayout和NavigationView 的使用方法