NavigationView的使用

2017-02-15  本文已影响166人  难得糊涂与君勉
先准备一个表示头部的布局。
<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
上一篇下一篇

猜你喜欢

热点阅读