在布局文件中定义:
<android.support.design.widget.NavigationView
android:id="@+id/nv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:menu="@menu/menu_main"></android.support.design.widget.NavigationView>
一般是同DrawerLayout一起使用。
NavigationView的不同之处就在于可以使用app:headerLayout
和app:menu
来对侧滑栏添加头布局和Item。
app:itemIconTint
app:itemBackground
app:itemTextColor
上面三个属性可以设置Item的颜色样式。
Item直接用menu布局就可以:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/action_fresh"
android:icon="@mipmap/ic_menu_fresh"
android:title="新鲜事" />
<item
android:id="@+id/action_boring"
android:icon="@mipmap/ic_menu_boring"
android:title="无聊图" />
<item
android:id="@+id/action_para"
android:icon="@mipmap/ic_menu_para"
android:title="段子" />
<item
android:id="@+id/action_movie"
android:icon="@mipmap/ic_menu_fresh"
android:title="小电影" />
</group>
<item android:title="其他">
<menu>
<item
android:icon="@mipmap/ic_menu_setting"
android:title="设置" />
</menu>
</item>
</menu>
然后是Toolbar:
<!--选中状态icon的颜色和字体颜色-->
<item name="colorPrimary">@color/main_blue_light</item>
<item name="colorPrimaryDark">@color/main_blue_dark</item>
<item name="colorAccent">@color/main_blue_light</item>
<!--正常状态下字体颜色和icon颜色-->
<item name="android:textColorPrimary">@color/main_white</item>
可以引用这个样式来修改Toolbar的显示效果。
当然还要记得在xml布局中引入:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
这样只是设置出一个布局样式,还要在代码中使用才行:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final android.support.v7.widget.Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
/*final android.support.v7.app.ActionBar actionbar = getSupportActionBar();
if (actionbar != null)
{
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setHomeAsUpIndicator(R.mipmap.ic_menu_black_24dp);
}*/
mDrawerLayout = (DrawerLayout) findViewById(R.id.dl);
navigationView = (NavigationView) findViewById(R.id.nv);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.app_name, R.string.app_name);
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
}
还可以为NavigationView添加点击事件:
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if (menuItem.getItemId() == R.id.action_movie){
Snackbar.make(mDrawerLayout,"点击正确!",Snackbar.LENGTH_SHORT).show();
}
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
return true;
}
});