介紹
Navigation Drawer通常是從左邊邊緣拉出來的一個選單,是現在很常看到的UI元件。Google有提供此功能,這裡將使用Google提供的功能,來做到此效果,需用到DrawerLayout和NavigationView。DrawerLayout的功能是用來做從左到右拉出來的效果,NavigationView則是用來在拉出來的畫面上顯示資料和選單。
TreeView是一種在Windows常見的多層清單表示方式,而在Android中只提供了ExpandableListView,最多只支援到兩層清單的表示,所以如果想實現三層或多層的清單,就需要我們自己客製了,TreeView已有人做出,我將他改成自己需要用的字合併到Navigation Drawer,達到實現側邊欄裡還要能顯示多層清單的功能。
NavigationDrawer-設定Style
開啟AndroidManifest.xml確認使用android:theme為@style/AppTheme。再開啟styles.xml,將AppTheme的parent改為Theme.AppCompat.Light.NoActionBar,並加入以下items。
NavigationDrawer-設定layout
再來設定layout,DrawerLayout主要是一個跟畫面(root view),裡面只能包含兩個view,一個是主要內容的view,另一個是拉出來的選單view,這裡以LinearLayout和TextView來作為主要內容。NavigationView分上下兩部分,上面的是headerLayout,下面的是menu,通常會設置res/menu,然後再載入。activity_main如下。
drawer_header,可自行加入圖片或個人頭像,我只用TextView加上背景色。
將menu,設置在res/menu/drawer,如下。
在onCreate中加入以下程式,
將ToolBar改成ActionBar。並為Navigation加上OnNavigationItemSelectedListener,這樣按menuItem的話,就會顯示toast。
執行試一試,drawerLayout可以拉出來。
NavigationDrawer-加上三圖示
這個要利用actionBarDrawerToggle來做了,到onCreat()加上actionBarDrawerToggle,如下。
這樣三就出來了。
TreeView-Element.java
TreeView-TreeViewAdapter.java
TreeView-TreeViewItemClickListener.java
TreeView-treeview_item.xml
這裡主要是自己製作多層的清單項目,使用ImageView和TextView,如下。
修改activity_main.xml
在NavigationView裡,加入一個LinearLayout和ListView,如下。
MainActivity.java
程式碼已放上Github