本文共 2620 字,大约阅读时间需要 8 分钟。
上次我们学习了,今天我们继续学习MaterialDesign(简称MD)控件——NavigationView。
正如其名,NavigationView,导航View。一般我们用它和DrawerLayout实现抽屉式导航设计,效果如下图。文档地址:
通过学习官方文档,我们知道NavigationView继承自FrameLayout。一般用于应用的导航菜单,菜单的内容来自于menu文件。NavigationView通常放置在DrawerLayout内部。
其中:
下面我们通过模仿实现的效果来学习NavigationView的基本用法。
引用SupportDesign库
compile 'com.android.support:design:23.1.1'
2.编写布局代码
首先编写Activity的布局代码:
编写NavigationView中的menu的xml文件
注意: 需要给group设置id,才会出现分割线。参考
3.实现onNavigationItemSelected接口来处理抽屉菜单项的选中事件。
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); mTextView = (TextView) findViewById(R.id.textView); @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { int id = item.getItemId(); String string = null; switch (id){ case R.id.nav_me: string = "我"; break; case R.id.nav_about: string = "关于"; break; case R.id.nav_friend: string = "好友"; break; case R.id.nav_manage: string = "通知"; break; case R.id.nav_message: string = "私信"; break; case R.id.nav_night: string = "夜间模式"; break; case R.id.nav_notification: string = "通知"; break; case R.id.nav_setting: string= "设置"; break; case R.id.nav_suggestion: string = "意见反馈"; break; case R.id.nav_theme: string = "主题风格"; break; } if (!TextUtils.isEmpty(string)) mTextView.setText("你点击了"+string); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; }
完整代码我已经上传到我的Github中,欢迎各位star&fork。
地址
如果你觉得这篇文章对你的学习有所帮助,不妨推荐一下,也可以关注我的Github