Android Navigation Drawer简记

一段时间没有接触Android开发,发现多了不少东西。比如这里的navigation drawer,现在已经有官方support library支持了。

现在来了解下怎么开发。

Drawer Layout

要想添加一个navigation drawer,需要在UI布局中将根视图声明为drawer layout。

在drawer layout中,有两个子视图。

其中,这个Activity的主视图需要出现在drawer视图的上方。因为XML布局中视图的出现顺序与视图在z轴上的顺序有关(也就是说如果是drawer在XML布局文件上方的话,会没法遮挡住主视图)。

Drawer的view需要指定 layout_gravity 的值为”start”。这是为了照顾一些从从右往左阅读的语言。

Drawer view的宽度不能超过320dp,以免滑出drawer后在主视图完全消失不见。

初始化Drawer View

因为这里的例子是将一个fragment作为Drawer,所以只需要在fragment中对drawer进行需要的设置就行了。

在fragment的 onCreateView() 中加载view,设置事件响应等。

监听Drawer的开闭事件

与其他的事件监听一致,只需要在DrawerLayout上 setDrawerListener() 就可以。

这个事件可以用来重新设置菜单,因为有时候drawer打开和关闭情况下可用的菜单项是不一样的。

当Activity中有action bar时, setDrawerListener() 中可以使用 ActionBarDrawerToggle 类来代替 DrawerListener 。这样一来action bar上的图标会对drawer的状态进行正确的响应。