請參考 Android官方终于支持 Navigation Drawer(导航抽屉)模式

概念流程

  1. 做一個 DrawerLayout ,將原本的 main content view 放進 FrameLayout 裡,記得 setContentView(R.id.drawer_layout)
  2. initActionBar() 簡單設定 ActionBar
  3. onCreateOptionsMenuonOptionsItemSelected 設定 ActionBar icon 動作
  4. initDrawer() 裡面,設定 DrawerLayout 跟 ActionBarDrawerToggle
  5. 設定 setOnItemClickListener 來操控 DrawerLayout 裡的元件 (如果你是用 listview 去接的話)

DrawerLayout

在需要抽屉菜单的界面,用DrawerLayout 作为界面根控件。在DrawerLayout里面第一个View为当前界面主内容;第二个和第三个View为抽屉菜单内容。如果当前界面只需要一个抽屉菜单,则第三个View可以省略。
這麼看起來, DrawerLayout 的第二項未必要是 ListView。如果使用 ListView 的話就要再開一個 adapter 去把相對應的值塞進去,並記得用 onItemClickListener 建立各個 item 的動作。

<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>

ActionBarDrawerToggle

監聽 Drawer 被打開 / 關閉

ActionBar

如果要加入 ActionBar,一樣要設定如下

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Comments

comments powered by Disqus
Copyright © 2013 Andro Chen
Powered by Logdown and Greyshade
Favicon from The Noun Project