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"?> |