- 介绍
与Toast类似,但不是Toast的替代品,Toast的作用是告诉用户现在发生了什么事情,但是用户只能被动的接受。
而Snackbar则在这方面进行了扩展,允许在提示当中加入一个可以交互的按钮,当用户点击按钮时候可以执行
一些额外的逻辑操作
- 简单使用
Snackbar.make(view,"Data deleted",Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"你做出了修改",Toast.LENGTH_SHORT).show();
}
}).show();
//上述代码表示最简单的使用,.make()方法来创建了一个Snackbar对象,第一个参数需要传入一个view,只要
//是当前界面布局的任意一个View都可以,Snackbar会使用这个View来自动查找最外层的布局,用于展示Snackbar,
//第二个参数是要显示的内容,第三个参数表示展示时长。
//.setAction()方法,设置一个动作。
- 别的用法
// 设置动作按钮颜色
snackbar.setActionTextColor(getResources().getColor(R.color.add_bg_color));
// 获取 snackbar 视图
View snackbarView = snackbar.getView();
//设置修改snackbar文本颜色
�int snackbarTextId = android.support.design.R.id.snackbar_text;
TextView tv = (TextView) snackbarView.findViewById(snackbarTextId);
tv.setTextColor(getResources().getColor(R.color.add_bg_color));
//设置snackbar背景色
�snackbarView.setBackgroundColor(Color.GRAY);
- 添加一个icon
//先得到Snackbar的视图。
View snackbarView = snackbar.getView();
//设置icon
ImageView iconImage = new ImageView(MainActivity.this);//得到一个Imageview
iconImage.setImageResource(R.mipmap.ic_launcher);//给ImageView设置图片
//icon插入布局
Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbarView;
Snackbar.SnackbarLayout.LayoutParams sl = new Snackbar.SnackbarLayout.LayoutParams(vl.WRAP_CONTENT, vl.WRAP_CONTENT);
//让icon的布局位于父布局垂直居中的位置
sl.gravity = Gravity.CENTER_VERTICAL;
iconImage.setLayoutParams(sl);
snackbarLayout.addView(iconImage, 0);
- 改变Snackbar出现的位置
// 获取 snackbar 视图
View snackbarView = snackbar.getView();
//获得布局参数
ViewGroup.LayoutParams vl = snackbarView.getLayoutParams();
CoordinatorLayout.LayoutParams cl = new CoordinatorLayout.LayoutParams(vl.width, vl.height);
cl.gravity = Gravity.CENTER_VERTICAL;
snackbarView.setLayoutParams(cl);
参考:[https://github.com/loonggg/MaterialDesignDemo](https://github.com/loonggg/MaterialDesignDemo)