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

原创 2015年11月18日 11:12:04

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

 

相关文章推荐

Android 自己实现 NavigationView [Design Support Library(1)]

转载请标明出处:  http://blog.csdn.net/lmj623565791/article/details/46405409;  本文出自:【张鸿洋的博客】 一、概述 ...

NavigationView自定义

自定义NavigationView

Android DrawerLayout和NavigationView实现左右侧滑和自定义toolbar。

首先看效果,如图所示。 由于项目已经完成一部分了,各种效果已经夹杂在一起了,代码就不单独提取出来了,大致代码如下。 布局文件代码如下: ...

NavigationView更改菜单icon和title颜色变化效果

NavigationView menu默认icon和title会随着菜单状态改变而改变,选择某个菜单后再次打开侧边菜单后会发现该菜单的icon和title会变成应用的主颜色,其他菜单项仍然为黑色。...

改NavigationView的MenuItem的字体颜色并修改默认选中的item

1.前言 NavigationView是android5.0以后引进的新控件,就是侧滑栏,但是策划栏MenuItem的字体颜色和默认选中项不是很好修改,经过我的摸索,发现字体颜色和默认选中项都是可以修...

Android DrawerLayout和NavigationView 的使用方法

1、DrawerLayout 侧拉菜单作为常见的导航交互控件,最开始在没有没有android官方控件时,很多时候都是使用开源的SlidingMenu。使用DrawerLayout可以轻松的实现抽屉效果...

Android关于侧边栏的简单使用(drawerLayout,navigationview,动态添加menu)

目前市面上大部分app都有使用侧边栏,假如的app还没有该功能,该让你的产品经理加班了哦。。 一、侧边栏一般包括header和menu,header一般包括背景图、用户名等一些东东,切图如下 下面...

android 开发 -- NavigationView和DrawerLayout实现 侧滑栏(Material Design)

随着 Google I/O 2015,新的 Android Design Support Library 给开发者带来了一些重要的 Material Design 组件,并且向下兼容到 Android...

Android 之 Material Design(三)—DrawerLayout+NavigationView+Toolbar(点击icon打开关闭侧滑菜单)

Material Design相关的控件,前两篇文章已经介绍了一些常用的控件了,这篇文章主要介绍一下DrawerLayout+NavigationView+Toolbar。这样Material Des...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 开发之Android Material Design NavigationView侧滑界面自定义
举报原因:
原因补充:

(最多只允许输入30个字)