1. NavigationView的使用

这里我们来讲讲在Android5.0之后推出的NavigationView的具体使用方式。和普通的侧拉菜单制作方式一样,首先所有的东西还是都放在一个DrawerLayout中。如果对DrawerLayout的用法还不是很了解的。

可以参考我上一篇文章:Android——MaterialDesign之二DrawerLayout

    CircleImageView实现图片圆形化的功能,我是感觉非常的nice,很好用。具体看下面例子操作。

首先添加库

Nav_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/nav_call"
        android:icon="@mipmap/call_1"
        android:title="Call">
    </item>

<item
        android:id="@+id/nav_friend"
        android:icon="@mipmap/friend_1"
        android:title="Friend">
    </item>
    <item
        android:id="@+id/nav_location"
        android:icon="@mipmap/location_1"
        android:title="Location">
    </item>
    <item
        android:id="@+id/nav_mail"
        android:icon="@mipmap/mail_1"
        android:title="Mail">
    </item>
    <item
        android:id="@+id/nav_task"
        android:icon="@mipmap/task_1"
        android:title="Task">
    </item>
</menu>

这里是侧滑的menu包括电话、朋友、位置、邮件、日程。

Nav_header.xml

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
    android:layout_height="180dp"
    android:padding="10dp"
    android:background="?attr/colorPrimary">

<de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:src="@mipmap/p4"
        android:layout_centerInParent="true"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/mail"
        android:layout_alignParentBottom="true"
        android:textSize="14sp"
        android:textColor="#fff"
        android:text="111222@qq.com"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/username"
        android:text="Tom Matin"
        android:textSize="14sp"
        android:textColor="#fff"
        android:layout_above="@+id/mail"/>
</RelativeLayout>

详解:这里用到了CircleImageViewsrc加入图片,自动的会处理图片圆形化

 

Activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/drawer_layout"
    tools:context="com.example.materialtest_demo2.MainActivity">

<android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/nav_menu"
        app:headerLayout="@layout/nav_header"
        android:id="@+id/nav_view">
    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

详解:这里侧滑还是用到了上次讲解的DrawerLayout 进行侧滑,而NavigationView代替了上次的TextView,通过 app:menuapp:headerLayout设置属性。

mainActivity.class:

...
//侧滑菜单
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);

navigationView.setCheckedItem(R.id.nav_call);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        return true;
    }
});

...

详解:这里获取到navigationView的实例后调用setCheckedItem()方法设置默认Call选项为选中,接着调用设置监听器,进行我们想要的操作,这里就简单的关闭菜单。

实验效果如下:

Android——MaterialDesign之三NavigationView的更多相关文章

  1. Android单元测试之三:使用模拟框架模拟依赖

    Android单元测试之三:使用模拟框架模拟依赖 基本描述 如果是一些工具类方法的测试,如计算两数之和的方法,本地 JVM 虚拟机就能提供足够的运行环境,但如果要测试的单元依赖了 Android 框架 ...

  2. Android——MaterialDesign之二DrawerLayout

    滑动菜单--DrawerLayout 滑动菜单就是把一些菜单选项隐藏起来,而不是放置主屏幕中,然后可以通过滑动的方式将菜单显示出来,具有非常的画面效果,就是类似侧边滑动. 例子:需要上一次的Toolb ...

  3. Android Material Design:NavigationView抽屉导航菜单

    需要添加的包: 测试代码: package com.zzw.navigationview; import android.app.Activity; import android.os.Bundle; ...

  4. Android Material Design NavigationView 及 Palette 颜色提取器

    DrawerLayout + NavigationView DrawerLayout布局,通常在里面添加两个子控件,程序主界面添加到NavitagionView前面. <android.supp ...

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

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46405409: 本文出自:[张鸿洋的博客] 一.概述 Google I/O 2 ...

  6. Android开发之NavigationView的使用

    NavigationView主要是和DrawerLayout框架结合使用,来完成抽屉导航实现侧边栏 引用一段官方文档的示例代码 <android.support.v4.widget.Drawer ...

  7. Android——MaterialDesign之一Toolbar

    Toolbar 由于ActionBar设计原因只能存在活动的顶部,从而不能实现MaterialDesign的效果,现在推荐使用Toolbar,继承Actionbar,但是比起它更加的灵活. 设置主题: ...

  8. .Net程序员玩转Android系列之三~快速上手(转)

    转自http://www.cnblogs.com/HouZhiHouJueBlogs/p/3962122.html 快速环境搭建和Hello World 第一步:JAVA SDK(JDK)的安装: 官 ...

  9. Android开发之三种动画

    转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...

随机推荐

  1. vue与jquey

    vue与jquey jQuery是使用选择器($)选取DOM对象,对其进行赋值.取值.事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的.比如需要 ...

  2. 10 python 初学(Python 的编码解码)

    Python 2 : ASCII Python 3 :Unicode

  3. flask-sqlalchemy 一对一,一对多,多对多操作

    先进行如下操作: from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app=Flask(__name__) db= ...

  4. 深入解读RabbitMQ工作原理及简单使用

    RabbitMQ系列目录 RabbitMQ在Ubuntu上的环境搭建 深入解读RabbitMQ工作原理及简单使用 Rabbit的几种工作模式介绍与实践 Rabbit事务与消息确认 Rabbit集群搭建 ...

  5. Linux 创建静态库(.a)和动态库(.so)

    0. 回顾一下 gcc 选项 ============================================== -E : 仅做预处理,例如去注释,宏展开,include 展开等 -S : ...

  6. randi( )函数--MATLAB

    randi()函数生成均匀分布的伪随机整数,范围为imin--imax,如果没指定imin,则默认为1. r = randi(imax,n):生成n*n的矩阵 r = randi(imax,m,n): ...

  7. 线程安全之CAS机制详解(分析详细,通俗易懂)

    背景介绍:假设现在有一个线程共享的变量c=0,让两个线程分别对c进行c++操作100次,那么我们最后得到的结果是200吗? 1.在线程不安全的方式下:结果可能小于200,比如当前线程A取得c的值为3, ...

  8. abbix通过JMX监控Tomcat(被监控端安装Tomat的服务器防火墙策略iptables配置)

    原文地址:http://jaychang.iteye.com/blog/2214830 一.目前的环境 被监控端192.168.153.191 /usr/local/tomcat 下载了catalin ...

  9. Vue Router 路由实现原理

    一.概念 通过改变 URL,在不重新请求页面的情况下,更新页面视图. 二.实现方式 更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式: 1.Hash  ...

  10. Atcoder F - LCS (DP-最长公共子序列,输出字符串)

    F - LCS Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement You are gi ...