Snackbar:的提出实际上是界于Toast和Dialog的中间产物。
Toast: 用户无法交互;
Dialog:用户可以交互,但是体验会打折扣,会阻断用户的连贯性操作;
Snackbar既可以做到轻量级的用户提醒效果,又可以有交互的功能(必须是一种非必须的操作)。
public void showSnackbar(View v){
//LENGTH_INDEFINITE:无穷
Snackbar snackbar = Snackbar.make(v, "是否开启加速模式?", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("确定", new OnClickListener() {
@Override
public void onClick(View v) {
showCustomToast(null);
}
});
//不能设置多个action,会被覆盖
snackbar.setAction("取消", new OnClickListener() {
@Override
public void onClick(View v) {
showCustomToast(null);
}
});
snackbar.setCallback(new Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
// TODO Auto-generated method stub
showCustomToast(null);
super.onDismissed(snackbar, event);
}
@Override
public void onShown(Snackbar snackbar) {
// TODO Auto-generated method stub
super.onShown(snackbar);
}
});
snackbar.setActionTextColor(Color.RED);
snackbar.show();
}
源码分析:
do{
//不断地查找parent,实际上就是找到最外层的FrameLayout
view.getParent();
}while()
…….
rootView.addView(view);//添加到最外层的布局容器里面