Material Design 中 FloatingActionButton 配合 CoordinatorLayout 实现可折叠 Toolbar

前言

在移动应用开发中,UI 设计是十分关键的一环。而 Material Design 是 Google 推出的一种视觉设计规范,它倡导简洁、轻盈、有深度和有层次的设计风格。其中 FloatingActionButton 是 Material Design 中必不可少的组件之一,而 CoordinatorLayout 则是用来实现可折叠 Toolbar 的关键。

在本文中,将会详细介绍如何使用 FloatingActionButton 和 CoordinatorLayout 实现可折叠 Toolbar。

实现步骤

1. 添加依赖

在项目的 build.gradle 文件中添加以下依赖:

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

2. 创建布局文件

在布局文件中,需要包含以下几个组件:

  • CoordinatorLayout:用来实现 Toolbar 的折叠效果;
  • AppBarLayout:用来包含 Toolbar 和 CollapsingToolbarLayout;
  • CollapsingToolbarLayout:用来实现 Toolbar 的折叠效果;
  • Toolbar:用来显示标题和操作;
  • NestedScrollView:用来显示内容;
  • FloatingActionButton:悬浮按钮。

示例代码如下:

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

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

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

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

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

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

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

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

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

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

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

3. 实现折叠效果

在 Toolbar 的布局文件中,将 CollapsingToolbarLayoutapp:layout_scrollFlags 属性设置为 scroll|exitUntilCollapsed。这样,当用户向上滚动内容时,Toolbar 会向上折叠,并且在完全折叠之前不会消失。

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

AppBarLayout 的布局文件中,将 NestedScrollViewapp:layout_behavior 属性设置为 @string/appbar_scrolling_view_behavior,这样,当用户向上滚动内容时,Toolbar 会折叠并滑出视图。

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

4. 实现悬浮按钮

在 FloatingActionButton 的布局文件中,将 app:layout_anchor 属性设置为 @id/app_bar_layout,将 app:layout_anchorGravity 属性设置为 bottom|end。这样,悬浮按钮会出现在可折叠 Toolbar 的底部。

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

总结

通过本文的介绍,相信大家已经了解了如何使用 FloatingActionButton 和 CoordinatorLayout 实现可折叠 Toolbar。这种布局方式可以让应用更加美观、更有层次感。如果你有其他关于前端开发的问题,欢迎在下方留言,我会尽快回复。

参考代码:https://github.com/catchonme/CoordinatorLayoutDemo

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


猜你喜欢

  • 在 React 中使用 Jest 和 Enzyme

    React 是一个广泛使用的前端框架,被许多企业和开发者所采用。为了保证 React 代码的质量,我们需要使用单元测试来测试我们构建的组件。Jest 和 Enzyme 是测试 React 组件的两个最...

    1 年前
  • TypeScript 中如何处理对象类型

    TypeScript 是一个基于 JavaScript 的语言,可以帮助我们在开发时进行类型检查,避免出现很多错误。使用 TypeScript 进行开发的过程中,对象类型的处理显得尤为重要。

    1 年前
  • Babel 学习笔记:如何配置源码解析

    在前端开发中,我们需要在各种浏览器上运行我们的 JavaScript 代码。然而,不同的浏览器对 JavaScript 的支持程度是不同的,这就导致了一些兼容性问题。

    1 年前
  • Redis 如何应对网络分区的问题?

    简介 Redis 是一种开源的内存数据结构存储系统,它可以支持多种数据结构,如字符串(String)、哈希(Hash)、链表(List)、集合(Set)、有序集合(Sorted Set)等。

    1 年前
  • ESLint 规则中的 no-console 详解

    前言 在前端开发中,我们经常使用 console 打印信息,在调试中起到了非常重要的作用。但是在生产环境中,这些调试信息会将不必要的信息暴露给用户,而且也会降低运行速度。

    1 年前
  • Koa 项目中如何使用 Webpack 打包前端代码

    介绍 在现代的前端开发中,我们经常会使用 Webpack 对前端代码进行打包。而在 Koa 项目中,我们也可以利用 Webpack 对前端代码进行打包,来更好地管理和优化我们的代码。

    1 年前
  • MongoDB 如何控制查询返回结果的数量?

    MongoDB 是一款非关系型数据库,作为一款高性能的 NoSQL 数据库,MongoDB 提供了多种灵活的查询方式。而在进行查询时,针对返回结果的数量控制也是非常重要的。

    1 年前
  • 解决用 Headless CMS 导致的 GraphQL 查询和分页问题

    作为一名前端工程师,您可能已经熟悉使用 CMS(Content Management System)来协助构建站点和应用程序。但是,为了更好地进行内容管理和主题设计,越来越多的网站和应用程序选择 He...

    1 年前
  • React + Enzyme:如何测试组件

    React 是一个流行的 JavaScript 库,用于构建复杂的用户界面。它的组件化设计使得开发人员可以轻松地构建可重用的组件。然而,在构建大型应用时,确保组件的正确性变得至关重要。

    1 年前
  • 使用 Hapi 框架处理静态资源

    Hapi 是一款基于 Node.js 平台的开源 Web 应用框架,它提供了一个强大的、可扩展的插件系统,同时对于路由、请求处理、验证等功能都有着良好的支持。本文将介绍如何使用 Hapi 框架来处理静...

    1 年前
  • 不用长轮询,这个 JS 插件可以让你用 SSE 实现推送

    不用长轮询,这个 JS 插件可以让你用 SSE 实现推送 在前端开发中,实时推送是一个非常常见的需求。在 Web 应用中,需要实时更新数据、交互和状态等。以前实现这种实时推送的方式是使用长轮询,但这种...

    1 年前
  • 什么是实时 Web(Real-Time Web):WebSocket、Socket.IO 和 Comet

    随着互联网的发展,越来越多的网站需要实时展示数据和交互更新。这时候就需要使用“实时 Web(Real-Time Web)”技术。 实时 Web 是指通过特定的通信协议,能够在客户端和服务器之间实现实时...

    1 年前
  • Deno 中的事件监听实例解析

    Deno 是一个用于 JavaScript 和 TypeScript 运行时的现代化、安全的环境。与 Node.js 不同,Deno 原生支持 TypeScript,具备更强的安全性,更好的开发体验。

    1 年前
  • Fastify 与 Kubernetes 的快速部署教程

    Fastify 与 Kubernetes 的快速部署教程 前言 随着微服务体系的逐渐成熟,Kubernetes 成为了目前最流行的容器编排工具之一。而 Fastify 由于其出色的性能,也成为了前端领...

    1 年前
  • Mongoose 自带数据校验教程及常用校验类型

    Mongoose 自带数据校验教程及常用校验类型 Mongoose 是一个针对 MongoDB 数据库的 Node.js 框架,它提供了非常完整的操作数据库的 API,同时也支持数据校验,让开发人员可...

    1 年前
  • 在 PWA 应用中集成支付宝和微信支付

    前言 随着移动互联网的普及和无线技术的不断发展,越来越多的企业开始将自己的业务逐渐转向移动端,其中 PWA 应用也在这个过程中得到了广泛的应用。PWA 应用是 Progressive Web Apps...

    1 年前
  • 使用 Next.js 和 Tailwind CSS 创建网页布局

    使用 Next.js 和 Tailwind CSS 创建网页布局 在现代 web 开发中,快速创建网页布局并保持可扩展性是很重要的。Next.js 和 Tailwind CSS 是两个流行的工具,它们...

    1 年前
  • 响应式设计如何应对文本折行问题

    在响应式设计中,文本折行是一项常见问题。虽然在不同设备上文本长度不同,但合适的文本折行可以使界面更美观、易读,提高用户体验。本文将探讨响应式设计中的文本折行以及如何解决相关问题。

    1 年前
  • ES10 中的 Symbol 对象详解

    Symbol 是 ES6 中新增的一种数据类型,其主要作用是用来表示一个独一无二的标识符,常用于对象属性的名称、迭代器方法等场景。ES10 中增加了一些新的 API,本文将详细介绍 Symbol 的用...

    1 年前
  • 如何在 LESS 中使用 interpolation?

    在编写 LESS 样式时,使用 interpolation 可以方便地在样式中插入动态变量,从而实现更为灵活的样式控制。下面就来介绍一下如何在 LESS 中使用 interpolation。

    1 年前

相关推荐

    暂无文章