一:先看效果圖
這個效果圖分為三部分:頭布局 menu(即中間的item部分) 尾布局
二:NavigationView的定義
Android5.0以前。我們做抽屜菜單的時候,左或右邊滑出來的那一部分的布局都是由我們自定義的眼溶。于是Google在5.0之后推出了NavitationView丑蛤,就是我們左邊滑出來的這個菜單留攒。這個菜單整體上分為兩部分谴麦,上面一部分叫做HeaderLayout杖挣,下面的那些點(diǎn)擊項(xiàng)都是menu痊远。
三:Navigation的使用(直接上代碼)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
解釋:
這是主界面
這是側(cè)滑界面
android:layout_gravity="start"或者Android:layout_gravity="left" :表示側(cè)滑菜單從左邊滑出垮抗,改成right變?yōu)閺挠疫吇觥?/p>
app:headerLayout="@layout/nav_header_main"? :表示頭布局
app:menu="@menu/activity_main_drawer"? :中間部分,menu的點(diǎn)擊部分
頭布局代碼:layout/nav_header_main
? ? ? ? ? ?
menu/activity_main_drawer布局
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
四:出現(xiàn)的問題
Q1:怎么在item中間加一條分割線
Answer:把item放在group里面碧聪。注意group要有id冒版。
代碼:? ? ? ? ? ?
Q2:怎么獲得頭布局的控件
Answer:
View headerView =navigationView.getHeaderView(0);//獲得頭布局
獲取imageview
ImageViewmImgPersonHead= (ImageView) headerView.findViewById(R.id.img_person_head);Q3:Item的點(diǎn)擊事件:
navigationView.setNavigationItemSelectedListener(newNavigationView.OnNavigationItemSelectedListener() {@Overridepublic booleanonNavigationItemSelected(MenuItem item) {//在這里處理item的點(diǎn)擊事件
switch(item.getItemId()) {
caseR.id.xxx:startActivity(newIntent(this,xxxActivity.class));break;
}return true;
})
Q4:怎么添加尾布局
Answer:看上面的代碼,只要在NavigationView里面逞姿,加入想要的尾布局內(nèi)容就可以
Q5:怎么設(shè)置item中icon的顏色
1.app:itemBackground="@color/colorAccent"設(shè)置每一個item的背景顏色
2.app:itemTextColor=""設(shè)置item的背景顏色
3.代碼中設(shè)置:navigationView.setItemIconTintList(null); //顯示icon本身的顏色
Q6:怎么設(shè)置item中icon的大写俏恕:
在dimens 文件中加入該屬性:
48dp
原理:
查看NavigationView中的源碼,最終發(fā)現(xiàn)在 NavigationMenuItemView這個類中實(shí)現(xiàn)時滞造,是采用以下方式獲取大小的:
public NavigationMenuItemView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mIconSize = context.getResources().getDimensionPixelSize(dimen.navigation_icon_size);
}
Finl:最后 歡迎各位補(bǔ)充续室。有問題歡迎批評