android Snackbar新控件解析

article/2025/9/18 18:58:33

Dialog和Toast,我们在日常的开发中一定非常熟悉,常常被用来作为Android应用内提示性信息的两种展示方式。然而Google在Design包中又提供了一种新的选择,那就是Snackbar。今天主要介绍Snackbar新控件的使用,以及三种提示信息展示方式的比较。

什么是Snackbar

Snackbar 是 Android 5.0 新特性——Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以滑动退出,也可以处理用户交互(点击)事件。

Snackbar的特性

  1. Snackbar会在超时或者用户在屏幕其他地方触摸之后自动消失;
  2. 可以在屏幕上滑动关闭;
  3. 出现时不会阻碍用户在屏幕上的输入
  4. 屏幕上同时最多只能显示一个Snackbar
  5. 如果在屏幕上有一个Snackbar的情况下再显示一个Snackbar,则先将当前显示的Snackbar隐藏后再显示新的Snackbar
  6. 可以在Snackbar中添加一个按钮,处理用户点击事件
  7. Snackbar一般需要CoordinatorLayout来作为父容器,CoordinatorLayout保证Snackbar可以右滑退出

Snackbar的使用

通过上文的介绍,我们对Snackbar的含义和功能有了基本了解,接下来通过代码来详细介绍Snackbar的使用。
使用MD控件,首先要在gradle文件中导入依赖,本文中使用的依赖包如下:

compile 'com.android.support:design:25.3.0'

弹出Snackbar,弹出Snackbar的方式和Toast方式相似,通过调用Snackbar类中的静态方法make()设置相关信息,show()方法弹窗Snackbar

Snackbar.make(view, message, duration).setAction(action message, click listener).show();

1.make()实现简单弹出

  • make() 方法的第一个参数是一个 view,snackbar 会找到一个父 view,以寄存所赋的 snackbar 值。Snackbar 会沿着 view 的树状路径,找到第一个合适的布局或窗口视图,作为父 view。一般是一个CoordinatorLayout对象。
  • 第二个参数是Snackbar中想要显示的内容,一般只能显示2行;
  • 第三个参数是Snackbar想要显示的时间长短,有三个值:LENGTH_INDEFINITE 永远显示、LENGTH_LONG显示较长时间、LENGTH_SHORT 显示较短时间;
  • Snackbar也要像Toast一样,调用show()方法才能显示。

案例分析
首先,我们创建一个Activity,在布局文件中添加CoordinatorLayout控件,并创建一个FloatingActionButton,用于测试FloatingActionButton结合Snackbar的展示效果。布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"tools:context="com.ease.wawaandroid.testdemo.SnackbarActivity"><android.support.design.widget.CoordinatorLayoutandroid:id="@+id/snackbar_container"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.design.widget.FloatingActionButtonandroid:id="@+id/snackbar_fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="right|bottom"android:layout_marginBottom="10dp"android:layout_marginRight="10dp"app:borderWidth="0dp"app:fabSize="normal" /></android.support.design.widget.CoordinatorLayout></android.support.constraint.ConstraintLayout>

在Activity中对控件进行初始化,并监听FloatingActionButton的点击事件,实现点击FloatingActionButton,弹出Snackbar,Activity的代码如下:

public class SnackbarActivity extends AppCompatActivity implements View.OnClickListener {private CoordinatorLayout coordinatorLayout;private FloatingActionButton fab;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_snackbar);initView();}private void initView() {coordinatorLayout = (CoordinatorLayout) findViewById(R.id.snackbar_container);fab = (FloatingActionButton) findViewById(R.id.snackbar_fab);fab.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.snackbar_fab:Snackbar.make(coordinatorLayout, "这是一个snackbar", Snackbar.LENGTH_SHORT).show();break;}}
}

执行上述代码,显示效果为:
这里写图片描述
注意:mark()方法的第一个参数一定要是coordinatorLayout,否则,弹出的Snackbar将覆盖FloatingActionButton控件。
到这里就基本实现了Snackbar的简单弹出,但是,目前的效果和我们之前的Toast没什么大的区别,同时发现案例中,我们并没有调用Snackbar的setAction()方法。接下来,我们将开始介绍Snackbar的另一个重要方法setAction()。

2.setAction()添加按钮

除了显示之外,Snackbar中还可以有一个按钮,我们称之为Action,它显示在Snackbar的右边,可以通过Snackbar对象的setAction()方法设置,修改上文中FloatingActionButton控件点击事件的处理逻辑:

case R.id.snackbar_fab:Snackbar.make(coordinatorLayout, "这是一个snackbar", Snackbar.LENGTH_SHORT).setAction("action", new View.OnClickListener() {@Overridepublic void onClick(View v) {Snackbar.make(coordinatorLayout, "Action 被点击", Snackbar.LENGTH_SHORT).show();}}).show();break;

添加setAction()方法,该方法有两个参数,第一个参数是按钮的名称,第二个参数是按钮点击事件的监听方法。显示效果如下:
这里写图片描述

3.显示隐藏监听

在Snackbar弹出和消失时,都会触发一个回调事件,我们可以通过Snackbar对象的addCallback()方法(setCallback()方法已经过时)捕获它们:

Snackbar.make(coordinatorLayout, "这是一个snackbar", Snackbar.LENGTH_SHORT).setAction("action", new View.OnClickListener() {@Overridepublic void onClick(View v) {Snackbar.make(coordinatorLayout, "Action 被点击", Snackbar.LENGTH_SHORT).show();}}).addCallback(new Snackbar.Callback(){@Overridepublic void onDismissed(Snackbar transientBottomBar, int event) {super.onDismissed(transientBottomBar, event);Toast.makeText(SnackbarActivity.this, "Snackbar隐藏", Toast.LENGTH_SHORT).show();}@Overridepublic void onShown(Snackbar sb) {super.onShown(sb);Toast.makeText(SnackbarActivity.this, "Snackbar显示", Toast.LENGTH_SHORT).show();}}).show();

Snackbar.Callback中有两个抽象方法,onDismissed()方法是当Snackbar消失的时候触发的事件;onShown()方法是当Snackbar显示的时候触发的事件。显示效果如下所示:
这里写图片描述

4.相关属性设置

Snackbar支持动态的设置一些属性,如Action的文本颜色、显示的文本内容、显示的持续时间等,可通过下面方法进行设置:

Snackbar snackbar = Snackbar.make(coordinatorLayout, "Action 被点击", Snackbar.LENGTH_SHORT);snackbar.setText("动态文本");//动态设置文本显示内容snackbar.setActionTextColor(Color.RED);//动态设置Action文本的颜色snackbar.setDuration(5000);//动态设置显示时间View snackbarView = snackbar.getView();//获取Snackbar显示的View对象//获取显示文本View,并设置其显示颜色((TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text)).setTextColor(Color.BLUE);//获取Action文本View,并设置其显示颜色((TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_action)).setTextColor(Color.BLUE);//设置Snackbar的背景色snackbarView.setBackgroundColor(Color.GREEN);//设置Snackbar显示的位置ViewGroup.LayoutParams params = snackbarView.getLayoutParams();CoordinatorLayout.LayoutParams layoutParams = new CoordinatorLayout.LayoutParams(params.width, params.height);layoutParams.gravity = Gravity.CENTER_VERTICAL;//垂直居中snackbarView.setLayoutParams(layoutParams);

至此,Snackbar的相关使用就介绍完了。

Snackbar与Dialog和Toast的比较

通过上文的介绍,我们知道了Snackbar和Dialog、Toast一样都是用来作为android内提示信息的,三者之间的应用场景也有所不同。

Dialog
模态对话框。也就说,此刻该对话框中的内容获取了焦点,想要操作对话框以外的功能,必须先对该对话框进行响应。
应用场景:对于删除确认、版本更新等重要性提示信息,需要用户做出选择的情况下,使用Dialog。

Toast
非模态提示框。也就说提示框的显示并不影响我们对其他地方的操作,Toast无法手动控制隐藏,需要设置Toast的显示时长,一旦显示时间结束,Toast会自动消失。如果多次点击并显示Toast,就会出现Toast重复创建并显示,给用户造成一种Toast长时间不隐藏的幻觉。
应用场景:对于无网络提示、删除成功、发布操作完成等这类不重要的提示性信息,使用Toast;

Snackbar
Snackbar和Toast比较相似,但是用途更加广泛,并且它是可以和用户进行交互的。Snackbar使用一个动画效果从屏幕的底部弹出来,过一段时间后也会自动消失。
应用场景:删除操作时,弹出Snackbar用于确认删除操作;消息发送失败时,弹出Snackbar,用于重新发送操作;当然重要的是与MD组件相结合,用户体验效果更佳。

至此,有关Snackbar的相关介绍就介绍完了,如有问题,欢迎留言。


http://chatgpt.dhexx.cn/article/o85tKEq6.shtml

相关文章

android开发之SnackBar的使用

SnackBar是一个类似于Toast的东西&#xff0c;它也有显示时长&#xff0c;但是比Toast更加灵活&#xff0c;同时&#xff0c;我们还可以给SnackBar设置点击事件&#xff0c;那么我们今天就来看看怎么用吧&#xff01; 先来一张效果图&#xff1a; 这种效果大家可能在一些App中…

Snackbar-Android M新控件

概述 查看官方API Snackbar 是 Android design support library 中的另一个组件。使用 Snackbar&#xff0c;可以在屏幕底部快速的显示一条消息&#xff0c;大体与 Toast 相同&#xff0c;但多了几分灵活性&#xff1a; 一小段时间之后、或者用户与屏幕触发交互&#xff0c;S…

Android Snackbar使用方法及小技巧-design

Snackbar和Toast相似&#xff0c;都是为了给用户提供交互信息&#xff0c;Snackbar是固定在底部的&#xff0c;显示时从下往上滑出 要使用Snackbar&#xff0c;需要在项目的build.gradle中添加依赖 dependencies {compile com.android.support:design:23.4.0 } Snackbar的使用…

Android 快别用Toast了,来试试Snackbar

&#x1f525; 应用场景 Toast提示默认显示在界面底部&#xff0c;使用Toast.setGravity()将提示显示在中间&#xff0c;如下&#xff1a; Toast toast Toast.makeText(this, str, Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();运行在在Android …

Android---简易Snackbar

目录 Snackbar 简介 Snackbar 特性 完整Demo Snackbar 简介 Snackbar 是 Android5.0 新特性---Material Design 中的一个控件&#xff0c;用来代替 Toast。Snackbar 就是一个类似 Toast 的快速弹出消息提示的控件&#xff0c;手机上显示在底部&#xff0c;大屏幕设备显示在左…

Android Snackbar基本使用

概述 Snackbar 是 Android 5.0 新特性——Material Design 中的一个控件&#xff0c;用来代替 Toast &#xff0c;Snackbar与Toast的主要区别是&#xff1a;Snackbar可以滑动退出&#xff0c;也可以处理用户交互&#xff08;点击&#xff09;事件。 样式 使用 Snackbar需要配…

Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?

转载请注明出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/51336415 本文同步发表于我的微信公众号&#xff0c;扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注&#xff0c;每天都有文章更新。 今天给大家带来一篇简单易懂的微技巧文章&#xff0c;并没…

Android开发——Snackbar使用详解

Snackbar是Android支持库中用于显示简单消息并且提供和用户的一个简单操作的一种弹出式提醒。当使用Snackbar时&#xff0c;提示会出现在消息最底部&#xff0c;通常含有一段信息和一个可点击的按钮。下图是Gmail中删除一封邮件时弹出的Snackbar&#xff1a; 在上图中&#xf…

Android Snackbar的使用

在项目中肯定有不少地方用到Toast&#xff0c;但是在项目各种各样的需求上&#xff0c;Toast已经不能满足我们的需求了。 其实google在Android 5.0的时候就推出了Snackbar&#xff0c;它算是Toast的一个进阶控件。 它是Material Design中的一个控件&#xff0c;与Toast的最大区…

Snackbar的使用和顶部Snackbar实现

下载链接&#xff1a;Snackbar顶部显示 也可以module的形式直接导入使用 &#xff1a;module导入教程 谷歌在android 5.0 发布后&#xff0c;随后公布了design库和设计理念&#xff08;需翻墙&#xff09;&#xff0c;意图在于规范安卓app的风格&#xff0c;类似而不仅仅ios的…

SnackBar 简单使用

1.简介 Snackbar是Android Support Design Library库中的一个控件&#xff0c;可以在屏幕底部快速弹出消息&#xff0c;比Toast更加好用.可以添加点击行为。多用于结合协调布局使用&#xff08;CoordinatorLayout&#xff09;。 implementation com.android.support:design:28…

MaterialDesign之Snackbar学习笔记

近期实在太忙了&#xff0c;看到好的文章先转载&#xff0c;后续自己慢慢消化吧&#xff01; 转载 http://www.jianshu.com/p/cd1e80e64311#rd 没时间解释了&#xff0c;快使用Snackbar!——Android Snackbar花式使用指南 字数2405 阅读1628 评论4 喜欢54 本文是在《Design…

Snackbar使用详解

Snackbar Snackbar是Android Support Design Library库中的一个控件&#xff0c;可以在屏幕底部快速弹出消息&#xff0c;比Toast更加好用。 开发出一个好的产品&#xff0c;友好的交互是不可缺少的&#xff0c;通常给用户提示信息的方式有三种&#xff1a;Dialog、Toast、Sn…

Snackbar使用详解及其相关框架TSnackbar

简述&#xff1a; Snackbar 是 Android design support library 中的一个组件&#xff0c;它的作用和Toast类似&#xff0c;显示吐司&#xff0c;但Snackbar的特别之处在于Snackbar显示的提示信息可以和用户交互&#xff0c;更好地获取用户反馈信息。同时&#xff0c;它显示的吐…

HAWQ:基于 Hessian 的混合精度神经网络量化

HAWQ&#xff1a;基于 Hessian 的混合精度神经网络量化 摘要动机方法海森方法的有效性分析海森矩阵方法推导根据幂迭代求海森矩阵的最大特征值根据海森矩阵最大特征值确定量化精度与顺序 实验结果ResNet20 On CIFAR-10ResNet50 on ImageNetSqueezeNext on ImageNetInception-V3…

HAWQ技术解析(二) —— 安装部署

一、安装规划1. 选择安装介质 HAWQ的安装介质有两种选择&#xff0c;一是下载源码手工编译&#xff0c;二是使用Pivotal公司提供的HDB安装包。源码的下载地址为 http://apache.org/dyn/closer.cgi/incubator/hawq/2.0.0.0-incubating/apache-hawq-src-2.0.0.0-incubating.tar.…

HAWQ取代传统数仓实践(二)——搭建示例模型(MySQL、HAWQ)

一、业务场景 本系列实验将应用HAWQ数据库&#xff0c;为一个销售订单系统建立数据仓库。本篇说明示例的业务场景、数据仓库架构、实验环境、源和目标库的建立过程、测试数据和日期维度的生成。后面陆续进行初始数据装载、定期数据装载、调度ETL工作流自动执行、维度表技术、事…

HAWQ从0.5开始安装说明.包含hadoop和hawq

文档是从自己的云笔记中复制,格式什么的可能有问题.已修复了一遍. 零.前提 一.安装hadoop 1.1下载并复制hadoop2.6.5 1.2编辑系统配置文件 1.3创建hadoop的tmp临时目录 1.4开始修改配置文件 1.5复制hadoop到其他所有节点上 1.6开始初始化hadoop 1.7 如果服务器重启了,…

开源数据库HAWQ,架构调研

hawq的简介 https://cloud.tencent.com/developer/article/1433137 HAWQ&#xff0c;全称Hadoop With Query&#xff08;带查询Hadoop&#xff09;。HAWQ使企业能够获益于经过锤炼的基于MPP的分析功能及其查询性能&#xff0c;同时利用Hadoop堆栈。HAWQ是一个Hadoop原生大规模…

apache hawq

为什么80%的码农都做不了架构师&#xff1f;>>> 资料地址&#xff1a; 导航页 What is HAWQ? HAWQ Architecture How HAWQ Manages Resources Understanding the Fault Tolerance Service Table Distribution and Storage Choosing the Table Distribution Pol…