第三十二篇-NavigationView导航抽屉的使用

效果图:

导航抽屉所用到的布局是DrawerLayout,可以在里面添加一个线性布局和TextView组件,TextView组件的文本信息就是"主页面"。然后和线性布局平行添加一个导航抽屉NavigationView

设置导航抽屉在左边,并且添加它的头部以及菜单

android:layout_gravity="left"app:headerLayout="@layout/head"app:menu="@menu/menu_main"

所以现在建立一个头部layout和一个菜单layout

head.xml

menu_main.xml

group是将其放在一个组里面,所以可以注意到效果图里面item1和item2下面都有条横线,目的是将其隔开。还可以为每个item添加图标

android:icon="@mipmap/ic_launcher"

图标可以自己选择图片。如果要让图标显示出来,需要在MainActivity中设置

navigationView.setItemIconTintList(null);

如果要设置头部的单击事件,可以

View view1=navigationView.getHeaderView(0);ImageView imageView=view1.findViewById(R.id.imageView);imageView.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        Toast.makeText(MainActivity.this,"您选择的是头部组件",Toast.LENGTH_SHORT).show();    }});

如果想要设置选择菜单事件的话,可以

final TextView textView=view1.findViewById(R.id.textView3);navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {    @Override    public boolean onNavigationItemSelected(@NonNull MenuItem item) {        textView.setText("您选择的是: "+item.getTitle().toString());        return true;    }});

效果已经完成,附上代码

main_activity.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:background="#fffff0"
    tools:context=".MainActivity">

    <LinearLayout
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <TextView
            android:textSize="56dp"
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="主界面"
            />
    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navi"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        app:headerLayout="@layout/head"
        app:menu="@menu/menu_main" />

</android.support.v4.widget.DrawerLayout>

head.xml

<?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:layout_width="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="抽屉组件的应用" />

    <TextView
        android:layout_marginTop="20dp"
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />
</LinearLayout>

menu_main.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:id="@+id/g1">
    <item
        android:id="@+id/item1"
        android:title="收藏"
        android:icon="@mipmap/ic_launcher"
        >

    </item>
    </group>

    <group android:id="@+id/g2">
    <item
        android:id="@+id/item2"
        android:title="钱包"
        android:icon="@mipmap/ic_launcher"
        >

    </item>
    </group>

    <item
        android:id="@+id/item3"
        android:title="相册"
        android:icon="@mipmap/ic_launcher"
        >

    </item>

    <item
        android:id="@+id/item4"
        android:title="文件"
        android:icon="@mipmap/ic_launcher"
        >

    </item>

</menu>

MainActivity.java

package com.example.aimee.navigationviewtest;

import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    NavigationView navigationView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        navigationView=findViewById(R.id.navi);
        navigationView.setItemIconTintList(null);
        View view1=navigationView.getHeaderView(0);
        ImageView imageView=view1.findViewById(R.id.imageView);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"您选择的是头部组件",Toast.LENGTH_SHORT).show();
            }
        });
        final TextView textView=view1.findViewById(R.id.textView3);
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                textView.setText("您选择的是: "+item.getTitle().toString());
                return true;
            }
        });
    }
}

原文地址:https://www.cnblogs.com/smart-zihan/p/9950709.html

时间: 2024-11-05 22:53:10

第三十二篇-NavigationView导航抽屉的使用的相关文章

第三十二篇、iOS 10开发

1.语音识别 苹果官方在文档中新增了API   Speech,那么在以前我们处理语音识别非常的繁琐甚至很多时候可能需要借助于第三方框架处理,那么苹果推出了这个后,我们以后处理起来就非常的方便了,speech具有以下特点: 可以实现连续的语音识别 可以对语 音文件或者语音流进行识别 最佳化自由格式的听写(可理解为多语言支持)和搜索式的字符串 官方文档: 核心代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23   #impo

mysql 第三十二篇文章~并发导致的从库延迟问题

一 简介:今天来聊聊周期性从库延迟的问题 二 背景:近期每天的指定时间段,收到从库延迟的报警,然后过一段时间恢复.由于从库是提供读服务的,所以需要解决 三 分析思路: 1 周期性延时,而且全部从库都出现延迟,应该是由于主库的DML操作引起的 2 查看主库的慢日志记录(我们的数据库会每小时进行切割),也并没有发生DML慢语句,排除因为慢sql(DML操作)导致的问题,主库的DML操作如果出现慢语句,同步到从库会更慢,比如update,delete语句 3 查看从库的慢日志记录,是否出现DML慢语句

第三十二篇:Windbg中USB2.0调试环境的搭建

2011年的时候,为了开发USB Mass storage -- UASP (USB attached SCSI Protocol)的设备驱动程序,从米国买了两个USB2.0的调试小设备(如下图,每个似乎80美刀,贼贵的东西). 主要是用来替代串口115200波特率的响应速度慢,以便解决调试效率的问题. 当时,根据WINDBG的HELP文档,而且也GOOGLE了一些网上的相关参考内容,硬是没有把USB2.0的调试环境搭建起来. 后来有一段时间,朋友要开发驱动程序,他原来一直用一台配有PCI转13

第三十二篇、直播项目开发

1.直播app分类:主要分为两大类 >秀场直播 如:映客 花椒 >游戏直播 如:斗鱼 2.iOS主要实现的技术 >播放:播放远程服务器收集到的视频 >录播:主播通过手机直播,客户端需要将直播实时视频传输给服务器,以边其它手机客户端播放 >即时通讯:观众和主播互动的礼物,聊天及时呈现   >弹幕 >整体界面的搭建和展示 3.技术分析 数据-->解协议-->封装格式数据-->解封装-->音频压缩数据-->音频解码-->音频的原始数据

小刘同学的一百三十二篇日记

感觉很伤...又不能11点之前睡觉. 其实今天还是在改论文了啊. 周五之前一定要交定稿了. 就不和大家多说了. 今天没有分享技术?? 那么大家早安吧?? morning~~ 原文地址:https://www.cnblogs.com/xiaoliutongxue/p/9005659.html

我的第三十二篇博客---mongo和python结合

交互再用管道 或者$ 的时候 要加引号括住ret=collection.find({'$or':[{'age':{'$gt':20}},{'age':{'$lt':17}}]})ret=collection.aggregate([{"$group":{'_id':'$age'}}]) from pymongo import MongoClientclient=MongoClient(host='localhost',port=27017)collection=client['test'

开始写游戏 --- 第三十二篇

目前游戏进度: 1.修改了副本的方式 2.添加登录.选择服务器界面 3.正在研究pomelo框架 详情: 1.修改了副本的方式 可以通过配置来修改副本的地图.敌人: 这是修改副本章节的配置: 这是章节下的关卡的配置: 2.添加登录.注册.选择服务器界面 3.正在研究pomelo框架 嘛~现在只是看到了 明天继续. 原文地址:https://www.cnblogs.com/dmc-nero/p/12386875.html

Python开发【第二十二篇】:Web框架之Django【进阶】

Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 新随笔 联系 订阅 管理 随笔-124  文章-127  评论-205 Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp