NavigationView的学习

Android ToolBar+NavigationView 学习笔记 (3) NavigationView是Material库中提供的一个控件,可以将滑动菜单页面变得非常简单。 添加依赖 文件位置: dependencies { //其他内容省略... //Material库 implementation 'com.google.android.material:material:1.1.0' //一个开源项目 CircleImageView,可以用来实现图片圆形化的功能 implementation 'de.hdodenhof: 阅读详情




-------------------------------------------------------------------------------------


NavigationView
要导入一个包。 F4,选中dependency 选择+  选中 design()


修改Main_activity 里面的LinearLayout 为 <android.support.design.widget.NavigationView


<android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:id="@+id/menu"
        >
    </android.support.design.widget.NavigationView>


添加自定义属性:
 添加这行xmlns:app="http://schemas.android.com/apk/res-auto"
 
然后 Close Project,再打开。


新建一个menu 的目录
新建一个menu的文件。navigation_menu


  <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="第一项" android:id="@+id/item_1"/>
<item android:title="第二项" android:id="@+id/item_2"/>
<item android:title="第三项" android:id="@+id/item_3"/>
<item android:title="第四项" android:id="@+id/item_4"/>
</menu>




添加 app:menu="@menu/navigation" 到下面


    <android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:id="@+id/menu"
       
        app:menu="@menu/navigation"
        >
    </android.support.design.widget.NavigationView>


修改:MainAcitivty:
package com.kodulf.cehua;


import android.support.design.widget.NavigationView;
import android.support.v4.app.ActivityCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity implements View.OnClickListener, NavigationView.OnNavigationItemSelectedListener {


    private DrawerLayout drawer;
    private NavigationView menu;
    private ActionBarDrawerToggle toggle;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        drawer = (DrawerLayout) findViewById(R.id.drawer);
        menu = (NavigationView) findViewById(R.id.main_menu);
//        menu = (LinearLayout) findViewById(R.id.menu);
//        menu.setOnClickListener(this);
//        显示Home
        toggle = new ActionBarDrawerToggle(this, drawer, 0, 0);
        //三条横线的Menu
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toggle.syncState();
        drawer.setDrawerListener(toggle);//让DrawerLayout的动作影响上面的按钮
        menu.setNavigationItemSelectedListener(this);
    }


    /**
     * menu点击后DrawerLayout 变化
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(toggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


    @Override
    public void onClick(View v) {


    }


    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        //return false;
        switch (item.getItemId()){
            case R.id.item_1:
                Toast.makeText(this,"first",Toast.LENGTH_LONG).show();
                break;
            case R.id.item_4:
                ActivityCompat.finishAffinity(this);
                break;
        }
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
//
//    @Override
//    public void onClick(View v) {
//        //drawer.closeDrawer(menu);
//        //drawer.closeDrawer(Gravity.START);//4.0一下是不能使用START的
//        drawer.closeDrawer(GravityCompat.START);//这样就可以了
//    }


}












把上面四项作为单选项:


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item android:title="第一项" android:id="@+id/item_1"/>
        <item android:title="第二项" android:id="@+id/item_2"/>
        <item android:title="第三项" android:id="@+id/item_3"/>
        <item android:title="第四项" android:id="@+id/item_4"/>
        </group>
</menu>


默认选中
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item android:title="第一项" android:id="@+id/item_1" android:checked="true"/>
        <item android:title="第二项" android:id="@+id/item_2"/>
        <item android:title="第三项" android:id="@+id/item_3"/>
        <item android:title="第四项" android:id="@+id/item_4"/>
        </group>
</menu>




添加图片
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item android:title="第一项" android:id="@+id/item_1" android:icon="@mipmap/ic_launcher" android:checked="true" />
        <item android:title="第二项" android:id="@+id/item_2" android:icon="@mipmap/ic_launcher"/>
        <item android:title="第三项" android:id="@+id/item_3" android:icon="@mipmap/ic_launcher"/>
        <item android:title="第四项" android:id="@+id/item_4" android:icon="@mipmap/ic_launcher"/>
        </group>
</menu>




添加小分组:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item android:title="第一项" android:id="@+id/item_1" android:icon="@mipmap/ic_launcher" android:checked="true" />
        <item android:title="第二项" android:id="@+id/item_2" android:icon="@mipmap/ic_launcher"/>
        <item android:title="第三项" android:id="@+id/item_3" android:icon="@mipmap/ic_launcher"/>
        <item android:title="第四项" android:id="@+id/item_4" android:icon="@mipmap/ic_launcher"/>
        </group>
    <item android:title="小分组">
        <menu>
            <item android:id="@+id/group_1" android:title="设置"></item>
            <item android:id="@+id/group_2" android:title="我的"></item>
            <item android:id="@+id/group_3" android:title="退出"></item>
        </menu>
    </item>
</menu>


将字体设置大一些:app:itemTextAppearance="?android:textAppearanceLarge"


<android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:id="@+id/main_menu"


        app:menu="@menu/navigation"
        app:itemTextAppearance="?android:textAppearanceLarge"
        >


---------------------------------------------------------
新建一个layout menu_header


高度设置一个定值:




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="200dp"
    android:gravity="center"
    android:background="#600F">
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="用户名"
        />
</LinearLayout>




然后添加app:headerLayout="@layout/menu_header"
<android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:id="@+id/main_menu"
        app:headerLayout="@layout/menu_header"
        app:menu="@menu/navigation"
        app:itemTextAppearance="?android:textAppearanceLarge"
        >








+++++++++++++++++++++++++++++++++++++++++++++
ViewPager


<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/drawer"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<!--FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F00"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello"
        />


</FrameLayout-->


    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F00"
        android:orientation="vertical"
    >
    <android.support.v4.view.ViewPager
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/pager"
        />


</LinearLayout>
    <android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:id="@+id/main_menu"
        app:headerLayout="@layout/menu_header"
        app:menu="@menu/navigation"
        app:itemTextAppearance="?android:textAppearanceLarge"
        >
    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>


----------------------------------------------------------------
Android学习笔记:NavigationView实现侧拉抽屉 概述NavigationView 是Google在2015年的IO大会上,发布的AndroidDesign Support Library的新控件,用于取代ActionBar,变得更加的灵活,新的Android Design Support Library兼容性也得到了提升,能够向下兼Android2.2版本。———-Android Design Support Library使用详解—————实现 阅读详情

相关推荐

Appstore 3.2(f)违规自救指南:从触发到申诉的完整应对策略

本文详细解析了Appstore 3.2(f)违规的应对策略,从触发原因到申诉流程,帮助开发者有效自救。文章涵盖隐瞒行为、账户关联和信息造假三大违规场景的判定逻辑,并提供申诉信写作的黄金法则和长期合规防御措施,确保开发者能够顺利通过苹果审核。

weixin_29304985的博客 660

DrawerLayoutACtionBar

这篇文章详细实现了DrawerLayout与ActionBar的完美结合,并通过不同的按钮获取不同的内容,以及ActionBar的相应变换,内容有点多,需要慢慢消化。

mxcsdn的博客 884

【完美解决】Anaconda3安装后缺失大量文件,没有scripts、Library等目录

Anaconda3是官网下载的:https://www.anaconda.com/distribution/#download-section 我选择的是64位python 3.7的版本。 问题出现及现象: 我自己选择了一个D盘的目录D:\Tools\Anaconda3进行安装,装完后发现conda list命令无法执行,首先都到的是配置环境变量,然后发现安装目录下缺失大量文件(如下图)...

android之行 3万+

NavigationView的基本使用

在design包中有个NavigationView的类,这个类用来实现app中侧滑菜单的效果。使用这个类搭配DrawerLayout可以很好的实现侧滑的效果。 NavigationView主要包含两个部分:headView和menu。headView部分一般用来显示用户头像、用户名、账号信息等等。menu项就是用来显示可选菜单的功能。直接上代码:<?xml version="1.0" encodi

MotionGear的博客 1457

【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南

本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。

weixin_42126677的博客 306

SAP移动类型

SAP移动类型移动类型定义 移动类型定义

qq_20593197的博客 6204

Android 抽屉侧滑菜单 DrawerLayout+NavigationView+ToolBar

效果图 当然只是一个简单的demo接下来就是主界面布局了<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"

android_hl的博客 833

Palantir解密:从企业数字化能力构成说起,“本体”如何破解现代企业数据应用难题?

抛开技术外壳来看,Palantir“本体”的理念内核其实并不复杂:构建一个统一、可操作的数字现实,以高效驱动决策与行动。其技术实施和产品沉淀的过程诚然是高复杂性、高难度的,但这正体现了Palantir所代表的新硅谷“All in AI+”的战略决心。对于我们而言,必须深刻认识到:企业数字化能力建设既不是高精尖技术的简单堆砌,也不是局部场景的数字化改良,而是一场企业级的“数字孪生”——关乎战略、组织与业务全域的体系能力的重塑。

SZSDQJC的博客 1685

NavigationView简单简介和简单使用

NavigationViewNavigationView NavigationView 实现我的超级会员列表的效果 package com.example.sixeightwork.Day03; import android.support.design.widget.NavigationView; import android.support.v4.widget.DrawerLayout; ...

SageDeceiveFiend的博客 3843

基于Simulink的雷达跟踪系统仿真(附源码)

此示例包含对雷达系统的基本特征进行建模的子系统。该模型是用于目标位置和速度检测的雷达系统的典型模型。该示例包括雷达脉冲发生器、射频发射器子系统、移动目标的 Simulink 表示、射频接收器和接收模块(Rx 模块)。

珞瑜的博客 3515

手把手教你学Simulink--智能控制算法的控制算法领域仿真建模实例:基于Simulink的遗传算法优化控制仿真模型

通过上述步骤,你可以设计并仿真一个基于Simulink的遗传算法优化控制模型。这种方法适用于许多复杂的优化场景,尤其是当传统方法难以找到最优解时。随着经验的积累,你可以进一步优化遗传算法的参数设置,或者结合其他智能优化技术(如粒子群优化、差分进化等)提升优化性能。

MHD0815的博客 208

View—NavigationView学习

NavigationView是什么image 导航View,一般我们用它和DrawerLayout实现抽屉式导航设计 分为两部分 上面一部分叫做HeaderLayout 下面的那些点击项都是menu 怎么用 app:headerLayout—指定头部的布局 app:menu—指定下面的点击项 android:layout_gravity—指定滑动方向 &lt;?xml version="1....

weixin_34071713的博客 145

ESD防护设计宝典(十九):元器件选型宝典——共模电感

然而,这位“大师”的脾气也颇为古怪,若设计者不解其性、用之不当,它非但不能抑制噪声,反而会引入信号完整性恶化、电源压降等新问题,甚至让您的系统EMC性能“雪上加霜”,导致项目在测试阶段功亏一篑。本文将带您深入共模电感的内在世界,从本质解析到参数详解,从设计陷阱到实战选型,全方位领悟其平衡艺术,掌握其应用核心,规避那些足以让项目翻车的致命陷阱。:这是存在于电路板内部的“家贼”。共模电感实质上是一个四端器件,它通过磁场的“加法”与“减法”运算,巧妙地实现了对共模噪声的抑制,同时为差模信号大开绿灯。

m0_56451176的博客 421

NavigationView学习笔记

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" ...

weixin_30711917的博客 128

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android Design控件之NavigationView的学习和使用

前言 上次我们学习了TabLayout的用法,今天我们继续学习MaterialDesign(简称MD)控件——NavigationView。 正如其名,NavigationView,导航View。一般我们用它和DrawerLayout实现抽屉式导航设计,效果如下图。 学习 文档地址:http://developer.android.com/reference/andro

mybook1122的专栏 907

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Material Design学习之DrawerLayout与NavigationView

一、作用DrawerLayout类似于第三方控件SlidingMenu,是一个侧滑抽屉菜单,支持从左边和右边滑出。 NavigationView是适配DrawerLayout的控件,它包含头布局和menu布局。 二、使用<android.support.v4.widget.DrawerLayout android:layout_width="match_parent"

自由奔跑的风 425

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android Material Design 学习之三:NavigationView 使用

在MD学习之二中提到了DrawerLayout 侧滑,但是滑动区域太过于单调,我们看看网易云音乐的侧滑,下图:就比较充实,MD 提供了一种可以让滑动变得丰富的控件 NavigationView 。基本使用布局:在DrawerLayout 添加 NavigationView,直接把MD 学习之二 中的TextView 换成 NavigationView&lt;?xml version="1.0" e...

dhl_1986的博客 494

Android--NavigationView使用学习

Google在Android5.0之后推出了NavigationView,简单说就是侧拉菜单栏。

似水流年 720

使用NaviGationView来配置SlidingMenu的左侧菜单——学习笔记

大概实现下面这样的效果吧,不过这个布局是之前用过的DrawerLayout的左侧菜单,现在把它实现在SlidingMenu的左侧菜单上, 相当于承接了前几篇的布局: 使用NaviGationView之前呢,需要添加Design Support库,因为这个控件是由这个库提供的,之后还会用到一个圆形化图片的控件,所以也需要添加这个控件的依赖,虽然之前已经添加过了,不过这里再声明一下compile

asjqkkkk的博客 2668

学习使用NavigationView,实现QQ侧滑菜单

学习使用NavigationView,实现QQ侧滑菜单目录学习使用NavigationView实现QQ侧滑菜单目录 学习API 添加库 准备资源文件学习API首先通过了解API,我们了解到NavigationView代表一个标准导航菜单的应用程序。如下: 菜单内容可以填充菜单资源文件。    NavigationView通常放置在DrawerLayout。 <android.support.v

u010584514的博客 474

Android Material Design控件学习(二)——NavigationView的学习和使用

前言 上次我们学习了TabLayout的用法,今天我们继续学习MaterialDesign(简称MD)控件——NavigationView。 正如其名,NavigationView,导航View。一般我们用它和DrawerLayout实现抽屉式导航设计,效果如下图。 学习 文档地址:http://developer.android.com/reference/android/suppo...

didingyun4257的博客 300

Material Design学习之NavigationView实现侧滑菜单栏

Material Design学习之NavigationView实现侧滑菜单栏      接触Material Design已经有一段时间了,但是实际的项目中用到的并不多,平时也没什么时间来仔细研究一下,今天来带大家来看一下Material Design 怎么用NavigationView来实现侧滑菜单栏,大家以前可能大多都在用第三方的SlideMenu库来实现侧滑菜单,现在来看看Navigat

隔壁小王的博客 1301

MaterialDesign学习笔记1:DrawerLayout+NavigationView实现抽屉效果

DrawerLayout+NavigationView实现抽屉效果 Google I/O 2015 给大家带来了Android Design Support Library,一直对Material Design感兴趣,最近开始学习MD风格控件,在使用的时候顺便整理成笔记。

tangvim的流媒体开发小屋 1841

Android Material Design控件学习NavigationView和Toolbar使用

Google I/O 2015 给大家带来了Android Design Support Library,我们也可以到Android Design Support Library进行了解,下面介绍Toolbar的使用和NavigationView导航抽屉,而NavigationView的典型用途就是配合之前v4包的DrawerLayout, 首先导入依赖包compile 'com.android

fictionss的博客 534

学习笔记: DrawerLayout、NavigationView、FloatingActionButton、SnakeBar的使用

一、一键生成 project &amp;gt; new Moudle &amp;gt; phone &amp;amp; Tablet Moudle &amp;gt; Navigation Drawer Activity 下面我们开始一步步实现上面的效果,学习各个新控件的使用方法 二、DrawerLayout 1. 简介 DrawerLayout,v4包提供的一个实现滑动菜单效果的控件。 2. ...

编码之路 802
上一篇: Frscon的报错:Error inflating class com.facebook.drawee.view.SimpleDraweeView
下一篇: 2.4 Android编码规范(微博官方)
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值