Material Design 中 Snackbar 的使用详解

在 Material Design 中,Snackbar 是一种轻量级的通知组件,通常用于向用户提供短期信息和简单的操作。Snackbar可以在操作成功、失败、警告等场景中使用,以便于在不打断用户操作的情况下,及时向用户反馈信息。本文将介绍Snackbar的使用方法,并提供实用的示例代码。

Snackbar 介绍

Snackbar 的外观

Snackbar有一个悬浮于屏幕底部的外观,与底部 Navigation Bar 间距为 8dp。外观包括一段文本和一个可选的操作按钮。

Snackbar 的交互

当用户与 Snackbar 中的操作按钮交互时,Snackbar 会消失,并执行相应的操作。如果没有操作按钮,Snackbar 会在一定时间后自动消失。

Snackbar 的时间

Snackbar 的持续时间默认为短时间,通常为 3 秒钟。可以设置Snackbar的持续时间为长时间,通常为 5 秒钟。

Snackbar 的使用

依赖

使用 Snackbar 需要在 project 根目录的 build.gradle 文件中增加如下依赖:

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

基本使用

创建Snackbar 需要三个参数:一个父布局 View,显示的文本以及显示时间。下面是一个示例:

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

其中 view 为 Snackbar 的父布局,可以是任何一个 View,Snackbar 在其下方显示。"Hello Snackbar!" 为 Snackbar 的显示文本。Snackbar.LENGTH_SHORT 指定了 Snackbar 的显示时间类型。

操作按钮

要给 Snackbar 添加操作按钮,需要通过 setAction 方法,按照以下方式创建一个 Snackbar:

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

其中 "Undo" 是操作按钮的文本, new View.OnClickListener() 是操作按钮的点击事件。点击操作按钮后,Snackbar 会消失,执行相应的操作。

自定义 Snackbar

如果要自定义 Snackbar 的外观和行为,可以通过 Snackbar.Callback 对象,按照以下方式创建 Snackbar:

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

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

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

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

此示例中创建了一个 Snackbar,设置了 Snackbar 的显示时间为 10 秒,并添加了一个自定义操作按钮。同时,通过 Snackbar.Callback 对象添加了 Snackbar 显示和消失的回调方法。

示例代码

下面是一个完整的示例代码:

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

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

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

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

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

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

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

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

其中,R.layout.activity_main 是包含 Button 控件的布局文件,R.id.button 是 Button 控件的 ID。

总结

Snackbar 是 Material Design 中常用的通知组件,旨在为用户提供短期信息和简单的操作。通过设置文本、显示时间和操作按钮,可以轻松创建 Snackbar。一旦 Snackbar 显示,通过响应回调来处理 Snackbar 的消失事件。希望本文对于您使用 Snackbar 有所帮助!

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


猜你喜欢

  • Chai 和 Mocha 结合使用时出现 promise 的测试失败问题的解决方法

    在前端开发中,测试是非常重要的一环。而 Chai 和 Mocha 是两个非常流行的测试框架。但是在使用 Chai 和 Mocha 结合测试 promise 的时候,有时会出现一些问题。

    1 年前
  • 谈谈 Headless CMS 解决多语言网站的方案

    在如今全球化的环境下,越来越多的网站需要提供多语言的支持以吸引不同国家的受众。然而,对于采用传统 CMS 的网站来说,多语言的实现是一个繁琐而且耗时的过程。而 Headless CMS 的出现则为这个...

    1 年前
  • Server-Sent Events 建立使用 WebSocket 做客户端的缘由

    在现代互联网应用中,实时性是一种非常重要的需求。无论是在在线聊天、在线游戏还是在线视频等应用场景下,实时性都是必须考虑的因素。而 WebSocket 技术是实现该需求的一种十分优秀的解决方案。

    1 年前
  • Socket.io 中使用 ACK 确认收到消息

    Socket.io 是一个跨平台的实时应用程序框架,基于前端技术,可以轻松构建实时网络应用程序。它使用 WebSocket 协议来提供实时通信功能,同时也可以使用传统的 HTTP 轮询机制和长轮询机制...

    1 年前
  • Vue.js 中如何使用 props 实现父子组件之间的数据传递

    在 Vue.js 中,组件是数据和模板的组合。组件之间的交互是应用程序中最为重要的部分之一。在此过程中,父组件向子组件传递数据是一个非常关键的部分。Vue.js 中的 props 模式为组件之间的数据...

    1 年前
  • 使用 ECMAScript 2016 中的 Array.prototype.includes 方法检查数组是否包含某个值

    在前端开发中,经常需要检查一个数组是否包含某个值。在 ECMAScript 2016 中,新增了一个 Array.prototype.includes 方法,可以更方便、更简洁地实现这个功能。

    1 年前
  • 使用 Fastify 全面升级你的 Node.js API

    Fastify 是一款快速、低开销、可扩展的 Node.js Web 应用框架,它的目标是提供最佳的开发体验和最佳的运行性能。此外,Fastify 也是一个非常轻量化的框架,整体体积只有 1MB 左右...

    1 年前
  • Cypress 如何测试 Angular 应用

    前言 Cypress 是一个基于 JavaScript 的端到端测试框架,它与 Angular 应用的集成非常友好,尤其是对单页应用(Single Page Application, SPA)的测试非...

    1 年前
  • 在 Vue.js 项目中使用 TypeScript 的优缺点分析

    在 Vue.js 项目中使用 TypeScript 的优缺点分析 Vue.js 是一种流行的前端模板渲染框架,而 TypeScript 是 JavaScript 的超集,它增加了强类型和其他特性。

    1 年前
  • LESS 开发中 IE8 下样式失效的问题解决方案

    背景 随着互联网的快速发展,Web 前端技术也日新月异。LESS 作为一种 CSS 预处理器,在前端开发中得到了广泛的应用,可以大大提高开发效率和代码的可复用性。但是在 IE8 下使用 LESS 开发...

    1 年前
  • ES12 中如何使用 optional chaining 和 nullish coalescing 操作符简化代码

    ES12 中如何使用 optional chaining 和 nullish coalescing 操作符简化代码 随着前端技术的不断发展,JavaScript 也在不断更新和优化,ES12(也被称为...

    1 年前
  • Deno 如何进行数据加密和解密

    引言 在前端开发中,我们经常需要进行数据加密和解密。Deno 是一款现代化的 JavaScript/TypeScript 运行时环境,内置了许多加密和解密的方法。本文将详细介绍如何在 Deno 中进行...

    1 年前
  • 深入了解 Sequelize Transaction

    介绍 在 Node.js 中使用 Sequelize ORM 进行数据库操作时,有时需要在一个事务中执行多个 SQL 操作,保证数据的完整性和一致性。Sequelize 提供了 Transaction...

    1 年前
  • React Native 架构演进之路(一):Flux 和 Redux

    React Native 是一款可以使用 JavaScript 开发跨平台移动应用程序的框架,它的核心思想是通过组件化的方式来构建 UI,同时也具备了优秀的性能和开发效率,目前已在多个知名公司得到了广...

    1 年前
  • 如何在 Serverless 架构中使用 Cognito 进行用户认证

    Serverless 架构已经成为现代化应用程序开发中的重要趋势,它允许开发人员专注于应用程序的开发,而无需关注基础设施。另一方面,Cognito 是亚马逊 Web Services (AWS)的一种...

    1 年前
  • 使用 Mocha + Sinon + Chai + Nock 实现 API 接口测试

    API 接口测试是前端开发中的一个重要步骤,可以帮助我们验证接口是否符合预期、性能是否达标以及排查接口问题。在进行接口测试时,我们可以使用一些工具库来辅助测试,其中 Mocha、Sinon、Chai ...

    1 年前
  • 如何在 Gatsby 项目中快速使用 Tailwind CSS?

    在前端开发中,使用 CSS 框架可以大大提高开发效率,减少样式编写的工作量。而 Tailwind CSS 是一个只包含实用的CSS工具组件的框架,方便快速构建响应式界面。

    1 年前
  • 如何使用 Jest 和 Sinon 测试 Node.js 应用

    在 Node.js 开发中测试是非常重要的一个环节,通过测试可以确保代码的可靠性、稳定性和可维护性,也可以帮助我们快速发现和解决问题。本文将介绍如何使用 Jest 和 Sinon 来测试 Node.j...

    1 年前
  • 如何使用 Next.js 搭建多页应用 (MPA)

    前端开发中,单页应用已经成为了一个非常流行的选择。然而,在某些场景下,多页应用 (MPA) 仍然是一个必要的选择,例如:SEO 需求强、页面间逻辑分离等等。本文将主要介绍如何使用 Next.js 框架...

    1 年前
  • 在ECMAScript 2017 (ES8) 中使用反射(Reflection)API

    在现代的前端开发中,越来越多的开发者开始使用 ECMAScript 2017 (ES8) 来编写 JavaScript 程序。ES8 中包括了一套反射(Reflection)API,可用于在运行时操作...

    1 年前

相关推荐

    暂无文章