Material Design 中使用 NavigationView 实现侧边栏导航

Material Design 是一种现代化的设计语言,主要用于移动设备和Web应用程序的界面设计。其中的NavigationView是Material Design中侧边栏导航的一种实现方式。但是,有些开发者在使用NavigationView时,常常会经常遇到触摸事件失效的问题。那么,本文将介绍Material Design中使用NavigationView实现侧边栏导航,以及如何避免触摸事件失效。

NavigationView介绍

NavigationView通常被用于在应用程序中展示导航菜单。这个控件是通过 DrawerLayout 实现的,可以让用户轻松地访问应用程序的不同部分,令Navigation Menu与应用程序之间的切换变得流畅且无缝。

接下来,我将介绍如何使用NavigationView实现侧边栏导航。

如何使用NavigationView

  1. 配置依赖项

在使用NavigationView之前,需要在build.gradle文件内添加如下依赖项:

-------------- -----------------------------------
  1. 在布局文件中添加侧边栏导航控件

使用NavigationView的第一步是在xml布局文件中添加该控件。

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

其中, app:menu="@menu/drawer_menu"指定了NavigationView的菜单布局文件, app:headerLayout="@layout/header_layout"指定了NavigationView的header布局文件。

menu/drawer_menu布局文件中应该设置NavigationView的菜单列表。

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

header_layout布局文件则用于设置NavigationView的头部(header)布局。

--------------- ----------------------------------------------------------
    -----------------------------------
    -----------------------------------
    -----------------------------
    -------------------------------------------
    --------------------------------
    ---------------------------
    --------------------------
    -------------------------
 
    ----------
        --------------------------
        ---------------------------
        ----------------------------
        -------------------------------------
        --------------------------------------
        ------------------------------------
        -------------------------------------------------------
        ------------------------------
        ----------------------------------- --
 
    ---------
        ---------------------------
        -----------------------------------
        ------------------------------------
        -------------------------------------
        --------------------------------------
        -----------------------------------
        ------------------------------
        ----------------------------------------
        --------------------------------
        ----------------------- --
-----------------
  1. 设置Toolbar

DrawerLayout默认会添加一个返回箭头按钮到Toolbar上,用于控制侧边栏的开合。 通过以下代码可以将Toolbar与DrawerLayout关联,同时让其在Activity中显示。

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

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

至此,NavigationView部分的配置就完成了,可以正常运行查看效果。

避免触摸事件失效

为了快速展示出该控件的效果,一些开发者通常把NavigationView放在DrawerLayout的顶层,导致了NavigationView的触摸事件被父控件(DrawerLayout)所拦截,无法正常进行事件响应。

为了解决这个问题,要启用NavigationView的触摸事件,需要将其放置在DrawerLayout的下层。

我们可以将NavigationView放在FrameLayout中,再将FrameLayout作为DrawerLayout的底部。

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

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

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

这样,就可以避免NavigationView触摸事件失效的问题了。

总结

本文主要介绍了Material Design中使用NavigationView实现侧边栏导航的方法,以及如何避免触摸事件失效的问题。NavigationView具有良好的交互性和界面效果,同时也方便了用户的操作和导航。希望通过这篇文章对大家有所帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64c713e210032fedd3906176


猜你喜欢

  • 使用 React 开发 SPA 应用时的主要注意事项

    使用 React 开发 SPA 应用时的主要注意事项 React 是一种用于构建用户界面的 JavaScript 库,主要用于构建单页面应用程序(SPA)。开发 SPA 应用程序需要考虑很多因素,包括...

    1 年前
  • 开发 Android 应用不可不知的 Material Design

    什么是 Material Design? Material Design 是谷歌官方推出的全新设计语言,通过各种视觉、运动和交互效果,让应用更加美观、易用和具备层次感。

    1 年前
  • ESLint 报错:Parsing error: The keyword 'import' is reserved

    ESLint 报错:Parsing error: The keyword 'import' is reserved 在现代的前端开发环境中,我们经常会使用到新的 JavaScript 特性,如 imp...

    1 年前
  • ES11 中 import 属性使用时 undefined 出现的原因及处理法

    随着前端技术的快速发展,越来越多的新语言规范不断涌现。其中,ES11 是一个重大的版本更新,引入了很多新的特性。然而,一些前端开发者在使用 ES11 中的 import 属性时却遇到了 undefin...

    1 年前
  • ECMAScript 2019 (ES10): 解决浏览器缓存问题

    ECMAScript 2019,也叫作ES10,是 JavaScript 的最新标准。它包括了一些新的特性和改进,其中包括一些有助于解决浏览器缓存问题的新功能。在本文中,我们将深入学习这些新功能,并探...

    1 年前
  • Redis 如何处理缓存击穿问题?

    什么是缓存击穿问题? 缓存击穿是指在高并发访问下,某个 key 缓存失效,此时大量的请求同时访问这个 key,导致后端系统负载剧增,压力暴增,甚至崩溃。 通俗来说,缓存击穿就像是一个钢琴的琴键被扣坏了...

    1 年前
  • 使用 Web Components designcards 进行 UI 开发

    Web Components 是开发人员创建可重用 UI 组件的标准。其中,designcards 是一种 Web Components 库,包含了预设计的 UI 组件,能够帮助前端开发人员快速、高质...

    1 年前
  • 从 Promise 到 Generator,JavaScript 异步编程的新突破

    JavaScript 是一种单线程语言,不能同时处理多个任务的程序。为了解决这个问题,开发人员使用回调函数实现异步编程。 但是,随着 JavaScript 应用程序的快速增长,回调地狱的问题也越来越严...

    1 年前
  • Next.js 中 API 路由的探索

    前言 在现代化的 Web 应用中,前端应用的复杂度与重要性愈加凸显,而 Next.js 则是一款适合前端开发的非常优秀的框架,具备强大的 React 支持、静态资源渲染、实时重载以及代码分割等特性。

    1 年前
  • Koa 框架中 session 的使用方法与技巧

    在 Web 开发中,Session 的概念是非常重要的。Session 可以帮助我们在客户端和服务器之间共享数据,以便实现用户登录、购物车等功能。本文将介绍如何在 Koa 框架中使用 Session,...

    1 年前
  • Enzyme 测试中处理 React 组件中的 PropTypes 错误

    React 是一款非常流行的前端框架,而 Enzyme 是一款用于测试 React 组件的 JavaScript 工具库。在测试 React 组件时,往往需要考虑组件的 PropTypes 是否定义正...

    1 年前
  • Deno 应用中如何进行数据加密和解密?

    随着互联网技术的发展,数据变得越来越重要,数据加密和解密变得越来越必要。而 Deno 是一个安全的 JavaScript 和 TypeScript 运行时环境,因此在 Deno 应用中进行数据加密和解...

    1 年前
  • Angular 如何优雅地实现表格分页和排序

    随着 Web 应用复杂度不断提高,表格的需求日益增长,但单纯的静态表格已经无法满足我们的需要。表格分页和排序就成为了我们经常遇到的问题。在 Angular 中,我们可以使用自带的指令 ngFor 来实...

    1 年前
  • ES6 中的 Map 数据结构用法详解

    Map 是 ES6 新增的一种数据结构,用于存储键值对。作为一位前端工程师,了解 Map 的用法将有助于提高代码效率和编写更简洁的代码。本文将为你详细介绍 Map 的用法及其在日常开发中的应用。

    1 年前
  • Jest 入门教程,让你玩转前端单元测试

    随着前端技术的不断发展,单元测试已成为我们开发过程中不可或缺的一部分。Jest 是一个专门为 React 应用提供的测试框架,它拥有配置简单、能够覆盖到多种测试类型等特点。

    1 年前
  • SASS 中 CSS sprite 的实现技巧

    什么是 CSS sprite? CSS sprite 是指将多个小图标合并成一张大图,然后通过 CSS 设置背景位置和大小来显示需要的图标。这样做的好处是可以减少 HTTP 请求,提高页面加载速度,同...

    1 年前
  • Cypress 测试如何处理验证码及滑动验证问题

    Cypress 是一款现代的 JavaScript 端到端测试框架,其自动化的能力能够大大提升测试效率和质量。然而,在一些需要验证码或滑动验证的场景下,Cypress 需要处理一些额外的挑战。

    1 年前
  • ES7 新特性:Object.values/Object.entries 实现深度遍历

    在 ES7 中,JavaScript 引入了 Object.values 和 Object.entries 这两个新特性,这两个方法可以极大地方便我们在对象操作时的操作。

    1 年前
  • 解决 Babel 在编译 decorator 时的转化过程出现的问题

    在前端开发中,Babel 是一个非常常见的编译工具,它可以将 ES6/ES7 等新版本的 JavaScript 代码转换成 ES5 代码,使得我们的代码能够在更老的浏览器上运行。

    1 年前
  • Material Design 实现 Android 后台服务切换

    在移动应用中,后台服务是一个非常重要的组件。它可以用来处理各种异步任务,比如网络请求和数据处理等等。在 Android 应用中,后台服务通常是使用 Service 类实现的。

    1 年前

相关推荐

    暂无文章