天天看點

Material Design元件之NavigationView

原文首發于微信公衆号:jzman-blog,歡迎關注交流!

Material Design 系列文章:

Material Design元件之FloatingActionButton

Material Design元件之AppBarLayout

Material Design元件之CollapsingToolbarLayout

今天來看一下 NavigationView 的使用,NavigationView 是一個标準的導航菜單,其菜單内容由菜單資源檔案來填充,NavigationView 一般和 DrawerLayout 一起搭配使用構成抽屜菜單,分别由内容頁和菜單頁組成。主要内容如下:

基本布局

常用屬性

文字選中效果

圖示與文字間距

案例

顯示效果

可以直接使用 DrawerLayout 作為根布局,裡面依次是内容布局和菜單布局,切記内容布局一定是在菜單布局的前面,可以這樣了解菜單劃出的時候肯定應該在内容布局之上,如果兩者順序相反,則影響菜單 Item 的點選事件以及菜單的滑動隐藏,當然如果有 ToolBar 等,可以按需添加到内容布局中,也可以 DrawerLayout 外,唯一差別是側換菜單是否遮擋 ToolBar,基本使用參考如下:

下面是 NavigationView 的常用屬性,具體如下:

如果美工比較用心會告訴點選時是那種顔色、按下是那種顔色或者是某種效果,此時就需要設定菜單項文字選中效果了,這裡選擇建立在 color 資源檔案的形式來實作文字選中效果了,定義 color 資源檔案如下:

然後,設定 NavigationView 的 itemTextColor 屬性即可,具體如下:

當然,也可以在代碼中設定,具體如下:

然後,設定對 NavigationView 菜單項選中的事件監聽,具體如下:

最後,在點選完成要設定該菜單項已被選中,具體如下:

使用 NavigationView 之後發現,菜單圖示與菜單文字之間有一定的間距,看着有點寬,有一點強迫症必須稍微修改小一點,根據之前修改 FloatingActionButton 大小的經驗,翻一下源碼找設定這個間距的位置,檢視 NavigationView 源碼,最終在 NavigationMenuPresenter 中找到相關的 dimen 值,然後順藤摸瓜找到與 Navigation 相關的幾個 dimen 值,具體如下:

此時,在項目的 dimens 檔案夾中建立名稱相同的值覆寫即可,這裡是修改 Menu 圖示與文字之間的間距,是以我們隻要設定:

至于其他相關的 dimen 值就不一一說明了,這樣就修改了 Menu 圖示與文字之間的間距。

下面是一個 NavigationView 結合 DrawerLayout 的使用案例,布局如下:

下面是顯示效果,如下圖所示:

Material Design元件之NavigationView

最近總結了一下 Material Design 元件的使用,可以選擇關注微信公衆号:jzman-blog 擷取最新更新,可以在公衆号回複關鍵字 MD 擷取相關代碼連結。

Material Design元件之NavigationView