先上图看效果
现在很多的应用都已经实现了,这种左侧侧滑菜单,同时也可以点击ActionBar左上角的三个横杠来显示或隐藏侧滑菜单.其实Android官方也已经提供了这个功能.下面我们就来学习一下怎么使用官方的API.
1. 导入官方的android-support-v4.jar包
2. 修改MainActivity的layout文件,把android.support.v4.widget.DrawerLayout做为XML文件的根节点. 因为DrawerLayout是我们能够实现Navigation Drawer的关键所在. 然后在里面添加两个元素,一个用作主界面来显示内容(当Navigation Drawer隐藏的时候), 另一个用来显示Navigation Drawer 的内容. 如下所示:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
有一下几点需要注意:
* 显示内容的元素必须是DrawerLayout的第一个子元素(例如,上例中的FrameLayout)
* 显示内容的元素的宽和高属性,必须设置为match_parent, 这是因为当Navigation Drawer隐藏的时候,它会铺满整个界面(例如,上例中的FrameLayout)
* 显示Drawer内容的元素必须指定layout_gravity属性. 一些语言(如阿拉伯语和希伯来语)要求文本布局和应用布局必须采用从右到左 (RTL) 的读取顺序,这时候属性值就要填入"start",而不是"left".(我测试了一下,填入start一定不会出错,但是如果填入right就会报错,应该是大陆的机器默认都是从左往右的顺序吧.)(例如,上例中的ListView)
* 显示Drawer内容的元素高度可以使用match_parent,宽度最好不要超过320dp,因为这样当Drawer打开的时候,用户还可以看到后面的主界面的一部分,用户体验