Android 开发之Android Material Design NavigationView侧滑界面自定义

Android 开发之Android Material Design NavigationView侧滑界面自定义

一、侧滑界面Menu自定义:

在menu文件夹下新建activity_main_drawer.xml文件,自定义标题和icon:

<pre name="code" class="java"><?xmlversion="1.0"encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">   
<groupandroid:checkableBehavior="single">
        <itemandroid:id="@+id/nav_forWhy"    android:icon="@drawable/ic_nav_for_why"
            android:title="十万个为什么"/>
        <itemandroid:id="@+id/nav_knowledge"android:icon="@drawable/ic_nav_knowledge"
            android:title="百科知识"/>
        <itemandroid:id="@+id/nav_expo"android:icon="@drawable/ic_nav_expo"
            android:title="科普博览"/>
        <itemandroid:id="@+id/nav_reader"android:icon="@drawable/ic_nav_reader"
            android:title="科普读物"/>
        <itemandroid:id="@+id/nav_favorite"android:icon="@drawable/ic_nav_favorite"
            android:title="我的私藏"/>
    </group>

    <itemandroid:title="其他">
        <menu>
            <itemandroid:id="@+id/nav_author"android:icon="@drawable/ic_nav_author"
                android:title="作者"/>
            <itemandroid:id="@+id/nav_about"android:icon="@drawable/ic_nav_about"
                android:title="版权说明"/>
        </menu>
    </item>
</menu>


 

二、侧滑界面头部布局自定义

在layout下新建nav_header_main.xml文件进行侧滑界面头部自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/side_nav_bar"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:orientation="vertical"
    android:gravity="bottom">

    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:src="@mipmap/ic_launcher"
        android:id="@+id/imageView" />

    <TextView android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:text="@string/app_name"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Encyclopedia World"
        android:id="@+id/textView" />

</LinearLayout>

三、开始创建activity的布局文件

将自定义menu和头部布局添加到activity_main.xml布局文件的NavigationView控件中:
<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />


 
四、在activity声明并调用NavigationView
声明NavigationView:
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);

对NavigationView每个item的进行监听:
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    switch (id){
        case R.id.nav_forWhy://十万个为什么
                        break;
        case R.id.nav_knowledge://百科知识
                       break;
        case R.id.nav_expo://科普博览
            break;
        case R.id.nav_reader://科普读物
                      break;
        case R.id.nav_favorite://我的私藏
                       break;
        case R.id.nav_author://作者
                        break;
        case R.id.nav_about://版权说明
                     break;
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);//关闭侧滑界面
    return true;
}

 
五、最终效果图:

 
 
Demo下载地址:http://zhushou.360.cn/detail/index/soft_id/3145828
 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值