Android Material Design之NavigationView(五)

news2024/11/16 19:57:39
  1. 先上图
    在这里插入图片描述

  2. 使用说明
    NavigationView与DrawerLayout 成对出现,经常被用作侧滑菜单,因此当我们使用 NavigationView时布局文件的根节点一定是DrawerLayout

  3. 属性

NavigationView 属性描述
android:id控件id
android:layout_width控件的长度
android:layout_height控件的高度
android:layout_gravitystart作为左侧滑动菜单出现,end作为右侧侧滑菜单出现
app:headerLayout头部视图布局
app:menu底部菜单布局
  1. 源代码
  • activity布局代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.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:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navigationView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/layout_head"
        app:menu="@menu/nav_menu" />


    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <com.google.android.material.appbar.MaterialToolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/design_default_color_primary_variant"
            app:logo="@mipmap/ic_launcher"
            app:menu="@menu/menu"
            app:navigationIcon="@drawable/ic_baseline_arrow_back_24"
            app:subtitle="我是一个子标题"
            app:subtitleCentered="false"
            app:subtitleTextColor="@color/white"
            app:title="我是一个标题"
            app:titleCentered="true"
            app:titleTextColor="@color/white" />


    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.drawerlayout.widget.DrawerLayout>
  • layout_head.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/design_default_color_primary_variant"
        app:layout_constraintDimensionRatio="h,16:9"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_default="wrap" />
</androidx.constraintlayout.widget.ConstraintLayout>
  • nav_menu.xm
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group
        android:id="@+id/g1"
        android:checkableBehavior="single">
        <item
            android:id="@+id/item1"
            android:title="A_1" />
        <item
            android:id="@+id/item2"
            android:title="A_2" />
        <item
            android:id="@+id/item3"
            android:title="A_3" />
        <item
            android:id="@+id/item4"
            android:title="A_4" />
    </group>

    <group android:id="@+id/g2">
        <item
            android:id="@+id/item5"
            android:title="B_1" />
        <item
            android:id="@+id/item6"
            android:title="B_2" />
        <item
            android:id="@+id/item7"
            android:title="B_3" />
        <item
            android:id="@+id/item8"
            android:title="B_4" />
    </group>
</menu>
  • Activity源代码
package com.yyf.demo;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;

import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;

import com.google.android.material.navigation.NavigationView;
import com.yyf.demo.databinding.ActivityMain3Binding;

public class MainActivity extends AppCompatActivity {
    private ActivityMain3Binding binding;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        binding = ActivityMain3Binding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setSupportActionBar(binding.toolbar);

        binding.toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick: 点击了返回图标");
            }
        });

        binding.navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Log.d(TAG, "onNavigationItemSelected: " + item.getTitle());
                //点击左侧滑动菜单item后,关闭侧滑菜单
                binding.drawerLayout.closeDrawers();
                return false;
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        Log.d(TAG, "onOptionsItemSelected: " + item.getItemId());
        switch (item.getItemId()) {
            case R.id.scan:
                Log.d(TAG, "onOptionsItemSelected: " + item.getTitle());
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}
  1. 使用注意
    • 在使用DrawerLayout当作根节点时NavigationView 一定要作为紧跟的子View,否则将无法使用侧滑效果
    • 在menu.xml文件中如果想让item出现间隔线条,只需要添加Group标签 并对Group标签声明id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于web前端大作业的HTML网页设计——我的班级网页HTML+CSS+JavaScript

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

Flink CDC 新一代数据集成框架

前言&#xff1a; 主要讲解了技术原理&#xff0c;入门与生产实践&#xff0c;主要功能&#xff1a;全增量一体化数据集成、实时数据入库入仓、最详细的教程。Flink CDC 是Apache Flink的一个重要组件&#xff0c;主要使用了CDC技术从各种数据库中获取变更流并接入到Flink中&a…

神经网络训练不起来,怎么办?

从optimization的角度&#xff0c;Cross-entropy比Mean Square Error更加适合用在分类上。使用Cross-entropy这个Loss function的时候&#xff0c;pytorch自动帮你把Soft-max加到你的Network的最后一层。 Optimization Critical Point是Saddle Point还是Local Point&#xff1…

【蓝桥杯web】第十四届蓝桥杯(Web应用开发)模拟赛1期-大学组

数据类型检测 请看这篇数据类型检测 渐变色背景生成器 html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name&…

华为云安全亮相世界互联网大会

近日&#xff0c;以“共建网络世界 共创数字未来——携手构建网络空间命运共同体”为主题的世界互联网大会在浙江乌镇盛大举行。华为云安全专家团队携全新的安全运营2.0和数据安全解决方案亮相峰会现场&#xff0c;重点展示华为云在安全运营和数据方案的最新实践成果&#xff0…

小啊呜产品读书笔记001:《邱岳的产品手记-11》第21讲 产品案例分析:Fabulous的精致养成

小啊呜产品读书笔记001&#xff1a;《邱岳的产品手记-11》第21讲 产品案例分析&#xff1a;Fabulous的精致养成一、今日阅读计划二、泛读&知识摘录第21讲 产品案例分析&#xff1a;Fabulous的精致养成三、头脑风暴四、思考叮嘟&#xff01;这里是小啊呜的产品进阶读书笔记整…

病毒和战争齐飞,24 届秋招会更惨吗?

2022 壬寅年&#xff0c;病毒和战争齐飞&#xff0c;流言和混乱四起。2023 届秋招的残酷已不需要再多说&#xff0c;各大平台校招社招一片哀嚎&#xff0c;如果说往年的各种帖子是在贩卖焦虑&#xff0c;今年就是实打实的就业寒冬。 先来看段分析&#xff0c;来自阮一峰大佬&a…

刷题看力扣,刷了两个月 leetcode 算法,顺利拿下百度、阿里等大厂的 offer

随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度&#xff0c;其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习&#xff0c;机器学习这类的算法&#xff0c;而是排序&#xff0c;广度优先&#xff0c;动态规划这类既考核数据结构也考核编…

《深入浅出Python量化交易实战》:散户也能学会的数字化交易策略

前言 您可能不知道&#xff0c;许多专业的交易机构已经采用设定程序完成自动化交易&#xff0c;通过机器语言&#xff0c;解密盘面的走势&#xff0c;从而实现持续盈利的目的。 &#xff08;文末送读者福利&#xff09; 这并非什么秘密&#xff0c;他们正是借助了这样的数字…

树和二叉树练习题

文章目录一 二叉树的五大性质二 判断题三 填空题四 选择题四 分析求解题五 算法设计题一 二叉树的五大性质 性质一&#xff1a;对于一颗二叉树&#xff0c;第i层的最大结点数量为 2i−12^{i-1} 2i−1 性质二&#xff1a;对于一颗深度为k的二叉树&#xff0c;可以具有的最大结点…

[附源码]SSM计算机毕业设计基于健身房管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于残差学习的卷积神经网络图像去噪研究-含Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、深度去噪网络结构设计✳️ 2.1 网络层数的设定✳️ 2.2 残差学习✳️ 2.3 批规范化✳️ 三、实验结果✳️ 3.1 网络训练✳️ 3.2 实验结果比较✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 由于图像去噪问题的退化模型假设比…

如何在确保身份安全的同时改善员工体验

疫情后世界的员工已经告别了传统的工作环境。远程和混合工作是新常态&#xff0c;员工希望即使在远程工作时也能完全访问他们的工作资源。他们还可能使用多个设备&#xff08;甚至是个人设备&#xff09;来访问公司数据。 现代工作环境 — IT 挑战 由于需要考虑的因素特别多&a…

软件测试面试技巧有哪些?可以从这2个方面去进行准备

面试所有只职场人&#xff0c;通往工作岗位的第一道关卡&#xff0c;也是最重要的一道门槛。而面试中&#xff0c;如何回答HR提出的问题很大程度上决定了面试能不能成功。所以这些软件测试的面试技巧你可不能错过了。 首先是自我介绍 自我介绍的时间不能太短&#xff0c;几十秒…

协同过滤算法

文章目录0 前言1. 概念1.2 分类2 基于用户的协同过滤2.1 相似性计算2.1.1 欧氏距离2.1.2 余弦相似度2.1.3 皮尔逊相关系数Pearson2.1.4 杰卡德相似度 Jaccard小结&#xff1a;2.2 结果分数2.3 优缺点分析3 基于物品的协同过滤3.1 结果分数3.2 优缺点分析4 总结4.1 应用场景4.2 …

list的介绍及使用(14)

目录 1、list的介绍 2、list的使用 1、list的构造 2、迭代器 3、list modifiers 4、list element access 5、list capacity 1、list的介绍 1、list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2、list的底层是双…

u盘提示格式化怎么修复?80%的人都在这么做!

u盘是我们平时经常使用的一个存储设备&#xff0c;使用时间久了容易出现格式化的情况&#xff0c;而这种情况一般都会出现在 U盘上。如果出现格式化的提示&#xff0c;u盘提示格式化怎么修复&#xff1f;很多小伙伴们可能都不知道恢复的方法&#xff0c;今天我们就一起来看看&a…

可观测性不止于监控,让运维不开盲盒!

近年来&#xff0c;可观测性热度节节攀升&#xff0c;企业在可观测性实践过程中常常也伴随着一系列棘手的问题&#xff1a; 监控与可观测区别是什么&#xff1f;可观测发展史是怎样的&#xff1f;如何规划可观测的体系化建设之路&#xff1f;如何让可观测平台与工具顺利落地&a…

雷达探测项目仿真代码(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

用DIV+CSS技术设计的明星个人网站制作(基于HTML+CSS+JavaScript制作明星彭于晏网页)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…