Snackbar是design support library中的组件的其中之一,它的使用效果与Toast类似,但更加灵活
Snackbar拥有的特性:
- 显示一段时间或当用户与之进行交互后,会自动消失
 - 通过CoordinatorLayout可以实现向右滑动消除Snackbar的效果
 - 同一时间只能显示一个Snackbar
 - 与Toast类似地使用LENGTH_LONG 和 LENGTH_SHORT设置显示时间
 - 提供Action属性供添加点击事件监听
 - 提供回调函数可以对Snackbar进行监听
 
想要使用Snackbar,首先需要添加com.android.support:design依赖项

一、 Snackbar的最简单用法是和Toast一样声明
1  | Snackbar.make(textView, "消息", Snackbar.LENGTH_SHORT).show();  | 
大部分属性与Toast相同,不过第一个参数传入的不是Context,而应该是一个View,因为Snackbar需要一个控件容器用来容纳自身,这里使用一个TextView
所以,主布局文件可修改为
1  | <?xml version="1.0" encoding="utf-8"?>  | 
MainActivity 修改为如下所示,当点击了Button后弹出Snackbar
1  | public class MainActivity extends AppCompatActivity {  | 
二、 此外,Snackbar可以通过Action来与之进行交互
1  | button.setOnClickListener(new View.OnClickListener() {  | 
三、 官方推荐使用CoordinatorLayout作为Snackbar的容纳容器,这样就可以实现向右滑动消除Snackbar的效果
将主布局文件修改为
1  | <?xml version="1.0" encoding="utf-8"?>  | 
MainActivity 文件修改为
1  | public class MainActivity extends AppCompatActivity {  | 
四、 可以设置Snackbar的出现消失监听函数
在Snackbar出现和消失时分别弹出一个Toast进行提示
1  | button.setOnClickListener(new View.OnClickListener() {  | 
五、改变Snackbar的背景色
想要设置Snackbar的背景色,就要通过getView()方法了,这里Snackbar需要换一种声明方式
1  | button.setOnClickListener(new View.OnClickListener() {  | 
六、Snackbar不一定只能从屏幕底端出现
Snackbar会沿着View 的树状路径,找到第一个合适的布局或窗口视图,作为父 View
因此,我们可以改变Snackbar的父View位置,从而改变Snackbar的出现位置
修改主布局文件,将屏幕平均分为上下两个空间
1  | <?xml version="1.0" encoding="utf-8"?>  |