友情链接: http://www.jianshu.com/p/d2b1689a23bf(我觉得这个人写的比我详细,比我透彻,觉得还是把这个链接放在这里吧~~ )
一个android小白,转android开发,今天想实现侧滑菜单这个功能,根据网上资料发现,有现成的 DrawerLayout,于是开始学习这个控件
1,DrawerLayout充当窗口内容的顶层容器,允许”抽屉”式的控件可以从窗口的一边或者两边垂直边缘拉出
2,抽屉的位置或者布局可以通过 Android:layout_gravity的子view的属性控制从哪边拉出,left/start代表从左边拉出,right/end 代表从右侧拉出,需要注意的是只能从一个抽屉控件从窗口的垂直边缘,多于一个抽屉控件,将会抛出异常
3,我趟的坑:DrawrLayout must be measured with Measured with MeasureSpec.EXACTLY 由于前面设置的都是 match_parent,所以需要在第二个view中设置一下 layout_gravity="start"
4,侧边菜单其实只是一个普通的View,一般里面装的是ListView,看起来就像菜单,他完全可以是一个button,textView等等。虽然称为菜单,但跟Activity的菜单形式是两码事,Activity的菜单只需要在资源文件中定义好,就能按照固定的形式显示出来。而drawerLayout的侧边菜单显示成什么样完全是取决于你自己,同样点击事件也完全由你自己去写。
源码(网上很多。。):
?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dl_left"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--主布局-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_main"
android:layout_width="100dp"
android:layout_height="100dp" />
</LinearLayout>
<!--侧滑菜单-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
android:layout_gravity="start">
<ListView
android:id="@+id/lv_left_menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@null"
android:text="DrawerLayout" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>