您的位置:首页 > 移动开发 > Android开发

Android DrawerLayout使用

2017-03-15 14:13 127 查看
         说到DrawerLayout,其实并不陌生,查看源码可以发现他是android .support.v4下面的一个组件,那么他究竟是干什么用的呢,说白了就是一个google官方提供的侧滑组件,相信吃瓜落的你已经使用过SlidingMen自定义组件,那么他和SlidingMenu类似,这下你应该懂了吧。

         还不懂的看下图:

        


        好了,那接下来就说说这玩意怎么用了。
        其实他的用法还是比较简单的,就像是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等,就不在这里废话了,没什么好说的

其实说了一大堆,上面的这三条是比较重要的,笔者曾经为此付出过时间代价。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息