package com.zjw.mymaterialdesign3; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import butterknife.BindView; import butterknife.ButterKnife; //12.3.2 p418 NavigationView /* Design Support库中的控件,优化滑动菜单页面 */ /* 使用: 1.加依赖 compile 'com.android.support:design:25.3.1' compile 'de.hdodenhof:circleimageview:2.1.0'//圆形化图片 CircleImageView项目主页:https://github.com/hdodenhof/CircleImageView 2.准备menu:显示具体菜单和headerLayout:显示头布局 menu: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!--指定这一组menu只能单选--> <group android:checkableBehavior="single"> <item android:id="@+id/nav_menu_call" android:icon="@drawable/icecream_04" android:title="call" /> <item android:id="@+id/nav_menu_friends" android:icon="@drawable/icecream_06" android:title="friends" /> <item android:id="@+id/nav_menu_location" android:icon="@drawable/icecream_17" android:title="location" /> <item android:id="@+id/nav_menu_mail" android:icon="@drawable/icecream_10" android:title="mail" /> <item android:id="@+id/nav_menu_task" android:icon="@drawable/icecream_20" android:title="task" /> </group> </menu> headerLayout: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="180dp" android:background="?attr/colorPrimary" android:padding="10dp" > <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/civ_icon" android:layout_width="70dp" android:layout_height="70dp" android:layout_centerInParent="true" android:src="@drawable/icon"/> <TextView android:id="@+id/tv_mail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="Tom@gmail.com" android:layout_centerInParent="true" android:textColor="#fff" android:textSize="14sp" /> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/tv_mail" android:layout_centerInParent="true" android:text="Tom" android:textColor="#fff" android:textSize="14sp" /> </RelativeLayout> 3.改主布局代码 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!--主屏幕中显示的内容--> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.Toolbar android:id="@+id/tb" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> </android.support.v7.widget.Toolbar> </FrameLayout> <!--滑动菜单显示内容--> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" app:menu="@menu/nav_menu" app:headerLayout="@layout/nav_header"/> </android.support.v4.widget.DrawerLayout> 其他的布局代码解析见前一篇DrawerLayout以及前前一篇Toolbar的简单使用 */ public class UseOfNavigationView extends AppCompatActivity { @BindView(R.id.tb) Toolbar mTb; @BindView(R.id.nav_view) NavigationView mNavView; @BindView(R.id.drawer_layout) DrawerLayout mDrawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_use_of_navigation_view); ButterKnife.bind(this); setSupportActionBar(mTb); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true);//让导航按钮显示出来 actionBar.setHomeAsUpIndicator(R.mipmap.left);//设置导航按钮图标 } mNavView.setCheckedItem(R.id.nav_menu_call);//将Call菜单设置为默认选中 //菜单点击事件监听 mNavView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { mDrawerLayout.closeDrawers();//关闭DrawerLayout滑动菜单 return true; } }); } //加载toolbar的Menu布局 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar, menu); return true; } //按钮点击事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.tb_item_backup: showToast("you clicked backup"); break; case R.id.tb_item_delete: showToast("you clicked delete"); break; case R.id.tb_item_setting: showToast("you clicked setting"); break; case android.R.id.home://导航按钮HomeAsUp的id mDrawerLayout.openDrawer(GravityCompat.START); break; default: break; } return true; } //专门弹吐司 private Toast mToast; public void showToast(String msg) { if (mToast == null) { mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT); } mToast.setText(msg); mToast.show(); } }
转载于:https://my.oschina.net/u/3620480/blog/1498408