来自:https://blog.youkuaiyun.com/codesuperMan1314/article/details/53673846
NavigationView是Design Support库中提供的一个严格按照MD规范设计的控件
activity_main.xml
<?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"
android:id="@+id/drawerLayout"
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/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/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:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:menu="@menu/nav_menu" />
</android.support.v4.widget.DrawerLayout>
nav_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_call"
android:icon="@mipmap/ic_launcher"
android:title="call"/>
<item
android:id="@+id/nav_friends"
android:icon="@mipmap/ic_launcher"
android:title="friends"/>
<item
android:id="@+id/nav_location"
android:icon="@mipmap/ic_launcher"
android:title="location"/>
<item
android:id="@+id/nav_mail"
android:icon="@mipmap/ic_launcher"
android:title="mail"/>
<item
android:id="@+id/nav_task"
android:icon="@mipmap/ic_launcher"
android:title="task"/>
</group>
</menu>
nav_header.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@color/colorPrimary"
android:layout_height="180dp">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@mipmap/ic_launcher"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:id="@+id/circleImageView" />
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/circleImageView"
android:layout_alignRight="@+id/circleImageView"
android:layout_alignEnd="@+id/circleImageView"
android:layout_marginTop="38dp"
android:id="@+id/textView" />
</RelativeLayout>
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if(actionBar!=null){
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.mipmap.ic_launcher);
mNavigationView = (NavigationView) findViewById(R.id.navigationView);
// 隐藏滚动条
if (navigationView != null){
NavigationMenuView navigationMenuView = (NavigationMenuView) navigationView.getChildAt(0);
if (navigationMenuView != null){
navigationMenuView.setVerticalScrollBarEnabled(false);
}
}
//navigationMenuView.getHeaderView(头布局的位置) 这个方法可以获取添加的头布局
// 设置点击事件
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_call:
Log.e("抽屉中","点击了电话");
// 关闭抽屉
mDrawerLayout.closeDrawers();
break;
}
return true;
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
// 打开抽屉
mDrawerLayout.openDrawer(GravityCompat.START);
break;
}
return true;
}
}
让图标显示原本的颜色
navigationView.setItemIconTintList(null);
如果我想在NavigationView的item之间添加上一条分隔线呢?很简单,只需要在menu中将相应的item放到