Android Material Design控件之NavigationView

Android Material Design Android官方控件学习目录

NavigationView

  • NavigationView是用来做DrawerLayout的第二个子布局的,就是抽屉布局
  • 由google提供的控件,跟DrawerLayout篇的LinearLayout一样的地位
  • 当然,你可以不使用NavigationView,使用其他布局(如FrameLayout+Fragment)来作为抽屉布局

导入design库

'com.android.support:design:26.1.0'

简单使用

xml

 

		
		
		


		
		


	

app:headerLayout:头部布局




	
	

  • 在代码中获取头布局及其子View
        View headerView = mNavigationView.getHeaderView(0);
        TextView mTextView = (TextView) headerView.findViewById(R.id.tv_header_title);
        mTextView.setText("NavigationView");

app:menu:描述下半部分的布局




	
		
		
		
		

	

	
		
			
			
		
	

  • 类似listview
  • 在代码中设置各item点击事件
 mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                //在这里处理item的点击事件

                switch(item.getItemId()){
                    case R.id.nav_camera:
                        Snackbar.make(mNavigationView,"照相", Snackbar.LENGTH_LONG).show();
                        break;
                    case R.id.nav_gallery:
                        Snackbar.make(mNavigationView,"相册", Snackbar.LENGTH_LONG).show();
                        break;
                    case R.id.nav_slideshow:
                        Snackbar.make(mNavigationView,"视频", Snackbar.LENGTH_LONG).show();
                        break;
                    case R.id.nav_manage:
                        Snackbar.make(mNavigationView,"工具", Snackbar.LENGTH_LONG).show();
                        break;
                    case R.id.nav_share:
                        Snackbar.make(mNavigationView,"分享", Snackbar.LENGTH_LONG).show();
                        break;
                    case R.id.nav_send:
                        Snackbar.make(mNavigationView,"发送", Snackbar.LENGTH_LONG).show();
                        break;
                }
                mDrawerLayout.closeDrawer(Gravity.LEFT);
                return true;
            }
        });
  • app:itemIconTint="@color/blue" : item icon蒙层 默认是灰色,所以图片都是灰色的;
  • 图片都变为灰色,需要显示原色
 navigationView.setItemIconTintList(null);  //显示彩色
  • app:itemTextColor=""设置常态item的text颜色
  • app:itemTextAppearance="@style/NavItemAppearance":设置常态 item Text 格式
  • app:itemBackground="@color/colorAccent":设置每一个item的背景颜色
  • item点击/选中颜色变化
app:itemBackground="@drawable/color_nav_item_background"
app:itemTextColor="@color/color_nav_item_text"
app:itemIconTint="@color/color_nav_item_text"

selector 格式: state_checked:选中;state_pressed:点击


    
	

  • app:insetForeground="#40000000" :设置遮罩的阴影颜色
  • item设置group,才会出现分割线

github 源码地址:https://github.com/LinweiJ/MaterialDesignWidget

你可能感兴趣的:(android)