導(dǎo)航菜單的制作方式多種多樣熟妓,網(wǎng)上也有各種炫酷效果的具體實(shí)現(xiàn)方式害幅,那么今天我主要是想來說說Google在Android5.0之后推出的NavigationView的具體使用方式。
NavigationView在很多App上都已經(jīng)可以看到其效果圖心剥,國(guó)內(nèi)的比如知乎(側(cè)拉菜單滑出來的那一部分屬于NavigationView),如下圖:
OK,看完了圖滨巴,接下來我們就來說說這個(gè)NavigationView吧。
1.NavigationView是什么
long long ago俺叭,我們做抽屜菜單的時(shí)候恭取,左邊滑出來的那一部分的布局都是由我們自己來定義的,自己寫的話熄守,花點(diǎn)時(shí)間也能做出來好看的側(cè)拉菜單蜈垮,但總是要耗費(fèi)時(shí)間,于是Google在5.0之后推出了NavitationView裕照,就是我們左邊滑出來的那個(gè)菜單攒发。這個(gè)菜單整體上分為兩部分,上面一部分叫做HeaderLayout晋南,下面的那些點(diǎn)擊項(xiàng)都是menu晨继,這樣的效果如果我們要自己寫肯定也能寫出來,但是沒有必要搬俊,既然Google提供了這個(gè)控件紊扬,那我們就來看看這個(gè)控件要怎么用吧。
2.NavigationView怎么用
和普通的側(cè)拉菜單制作方式一樣唉擂,首先所有的東西還是都放在一個(gè)DrawerLayout中(如果你對(duì)DrawerLayout的使用還不熟悉餐屎,請(qǐng)參考這篇文章使用DrawerLayout實(shí)現(xiàn)側(cè)拉菜單),只不過這次我們把左邊滑出菜單的布局用一個(gè)NavigationView來代替玩祟,代碼如下:
OK腹缩,下面我來分別解釋一下這里邊幾個(gè)屬性的含義:
1.Android:layout_gravity="left"屬性表示該View是左邊的滑出菜單,這個(gè)屬性的含義不用多說,這是DrawerLayout使用方式中的知識(shí)點(diǎn)藏鹊。
2.app:headerLayout="@layout/header_layout"表示引用一個(gè)頭布局文件润讥,這個(gè)頭就是我們?cè)谏厦婵吹降哪莻€(gè)背景圖片,包括背景圖片上面的顯示用戶名的控件等等盘寡。
3.app:menu="@menu/main"表示引用一個(gè)menu作為下面的點(diǎn)擊項(xiàng)
OK楚殿,那我們?cè)賮砜纯搭^布局文件:
再來看看menu文件:
OK,運(yùn)行來看看效果:
OK竿痰,已經(jīng)顯示出來了脆粥,但是有一個(gè)問題,圖片都變?yōu)榛疑擞吧妫趺雌票涓簦坑袃煞N方式:
1.在布局文件中添加app:itemIconTint="@color/blue"屬性,表示設(shè)置圖片的顏色全都為藍(lán)色蟹倾,效果如下:
2.第一種解決方案會(huì)讓所有的圖片以一種顏色來顯示匣缘,如果我想讓圖片就是顯示他本身的顏色該怎么辦呢?在Java代碼中調(diào)用如下方法:
顯示效果如下:
這下正常了鲜棠。
還有下面兩個(gè)常用的API:
1.app:itemBackground="@color/colorAccent"設(shè)置每一個(gè)item的背景顏色
2.app:itemTextColor=""設(shè)置item的背景顏色
OK孵户,如果我想在NavigationView的item之間添加上一條分隔線呢?很簡(jiǎn)單岔留,只需要在menu中將相應(yīng)的item放到一個(gè)group中夏哭,并給該group取一個(gè)id即可,代碼如下:
顯示效果如下:
OK献联,分割線添加成功了竖配。
接下來我們來看看怎么處理NavigationView中的事件監(jiān)聽。
NavigationView中的事件處理主要是兩個(gè)方面里逆,一個(gè)頭部的點(diǎn)擊事件进胯,還有一個(gè)是itemView的點(diǎn)擊事件,下面我們分別來看看:
1.頭部點(diǎn)擊事件
處理頭部點(diǎn)擊事件原押,我們需要先獲得到頭部控件胁镐,在Java代碼中我們可以通過下面的方式獲得頭部控件,
然后通過調(diào)用headerView中的findViewById方法來查找到頭部的控件诸衔,設(shè)置點(diǎn)擊事件即可盯漂。
2.item點(diǎn)擊事件
OK,基本NavigationView的使用就這些笨农。有問題歡迎交流就缆。
以上。
轉(zhuǎn)發(fā)原文地址 : http://blog.csdn.net/u012702547/article/details/51253222