参考
Snackbars 与 Toasts
放弃Toast吧,用Snackbar
Snackbar样式
Snackbar源码分析
介绍
Snackbar 是一种针对操作的轻量级反馈机制,常以一个小的弹出框的形式,出现在手机屏幕下方或者桌面左下方。它们出现在屏幕所有层的最上方,包括浮动操作按钮。
它们会在超时或者用户在屏幕其他地方触摸之后自动消失。Snackbar 可以在屏幕上滑动关闭。当它们出现时,不会阻碍用户在屏幕上的输入,并且也不支持输入。屏幕上同时最多只能现实一个 Snackbar。
方法
创建
make(view,text,duration)
- 第一个参数是一个view,Snackbar 会沿着 view 的树状路径,找到第一个合适的布局或窗口视图,如CoordinatorLayout,作为父 view,以寄存所赋的 snackbar 值。
- 第二个参数是显示的文本,可以是资源索引也可以是字符串
- 第三个参数是显示时间。
设置操作按钮
setAction(text, listener)
显示
show()
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null)
.show();
设置样式
设置背景色
背景色是通过getView方法获取Snackbar的核心视图,然后就可以在对它设置任意背景色了。
Snackbar snackbar = Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null);
snackbar.getView().setBackgroundColor(red);
snackbar.show();
设置字体颜色
前面我们已经知道设置背景色的方法,字体颜色也是大同小异获取Snackbar的核心视图后我们知道SnackBar两个TextView的id分别是snackbar_text和snackbar_action,只需要对这两个TextView设置颜色即可。
Snackbar snackbar = Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null);
((TextView)snackbar.getView().findViewById(R.id.snackbar_text)).setTextColor(red);
snackbar.show();
注意
只有CoordinatorLayout + FloatingActionButton 显示Snackbar的时候FloatingActionButton位置会往上移,且需要CoordinatorLayout是FloatingActionButton和Snackbar共同的父View。