- 介绍
一款专门做菜单的控件,一般和DrawerLayout一起使用。 - 使用
第一步,先准备一个头布局,一个菜单
先准备一个表示头部的布局。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp">
<ImageView
android:clickable="true"
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:background="#53fc77"/>//一个背景图片
<de.hdodenhof.circleimageview.CircleImageView
android:clickable="true"
android:id="@+id/it"
android:layout_width="70dp"
android:layout_height="73dp"
android:src="@mipmap/xlj"
android:layout_centerInParent="true"//这里是采用了一个第三方的圆形头像
/>
</RelativeLayout>
一般的布局形式,可以按照自己想要的去设计,去布局。如上述布局,效果如下:
Paste_Image.png
在准备下面的菜单文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/favorite"
android:icon="@mipmap/ic_launcher"
android:title="收藏"
/>
<item
android:id="@+id/wallet"
android:icon="@mipmap/ic_launcher"
android:title="钱包"/>
<group android:id="@+id/g2">
<item
android:id="@+id/photo"
android:icon="@mipmap/ic_launcher"
android:title="相册"/>
</group> //用group包裹,可以实现分割线,就是说,这个group中的内容与上,与下面的内容会出现分割线。
<item
android:id="@+id/file"
android:icon="@mipmap/ic_launcher"
android:title="文件"/>
</menu>
在布局文件中使用
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="left" //这是和DrawerLayout配合使用时候带的
android:fitsSystemWindows="true"
app:headerLayout="@layout/header_layout" //关键之一,引用头部的布局
app:menu="@menu/main"> //关键之二,引入菜单
</android.support.design.widget.NavigationView>
其中:android:fitsSystemWindows = "true":
内置的一个布尔值属性,通过其去调整基于系统窗口的视图布局,例如状态栏,如果为true,将自动
调整系统窗口布局来适应你自定义的布局。例如:当系统有状态栏,你的应用也存在状态栏时便可以设置为ture。
- 添加点击事件
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setItemIconTintList(null); //这样你在下面的菜单上的图标就会显示原本的颜色。
View headerview = navigationView.getHeaderView(0); //得到头部的布局,
heandImage = (ImageView) headerview.findViewById(R.id.iv); //从头布局中找到里面的控件,
可以添加点击事件
circleImageView = (CircleImageView) headerview.findViewById(R.id.it);
针对与下面的菜单:
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
}
return true;
}
});
在上面完成你所需要的点击事件。
结果如下:
Paste_Image.png
网友评论