- 介紹
與Toast類似,但不是Toast的替代品却妨,Toast的作用是告訴用戶現(xiàn)在發(fā)生了什么事情饵逐,但是用戶只能被動(dòng)的接受。
而Snackbar則在這方面進(jìn)行了擴(kuò)展彪标,允許在提示當(dāng)中加入一個(gè)可以交互的按鈕倍权,當(dāng)用戶點(diǎn)擊按鈕時(shí)候可以執(zhí)行
一些額外的邏輯操作
- 簡單使用
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()方法來創(chuàng)建了一個(gè)Snackbar對象捞烟,第一個(gè)參數(shù)需要傳入一個(gè)view薄声,只要
//是當(dāng)前界面布局的任意一個(gè)View都可以,Snackbar會(huì)使用這個(gè)View來自動(dòng)查找最外層的布局题画,用于展示Snackbar,
//第二個(gè)參數(shù)是要顯示的內(nèi)容默辨,第三個(gè)參數(shù)表示展示時(shí)長。
//.setAction()方法婴程,設(shè)置一個(gè)動(dòng)作廓奕。
- 別的用法
// 設(shè)置動(dòng)作按鈕顏色
snackbar.setActionTextColor(getResources().getColor(R.color.add_bg_color));
// 獲取 snackbar 視圖
View snackbarView = snackbar.getView();
//設(shè)置修改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));
//設(shè)置snackbar背景色
?snackbarView.setBackgroundColor(Color.GRAY);
- 添加一個(gè)icon
//先得到Snackbar的視圖。
View snackbarView = snackbar.getView();
//設(shè)置icon
ImageView iconImage = new ImageView(MainActivity.this);//得到一個(gè)Imageview
iconImage.setImageResource(R.mipmap.ic_launcher);//給ImageView設(shè)置圖片
//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出現(xiàn)的位置
// 獲取 snackbar 視圖
View snackbarView = snackbar.getView();
//獲得布局參數(shù)
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)