參考
Snackbars 與 Toasts
放棄Toast吧画髓,用Snackbar
Snackbar樣式
Snackbar源碼分析
介紹
image
Snackbar 是一種針對操作的輕量級反饋機(jī)制胁编,常以一個小的彈出框的形式尚粘,出現(xiàn)在手機(jī)屏幕下方或者桌面左下方痕寓。它們出現(xiàn)在屏幕所有層的最上方,包括浮動操作按鈕牌捷。
它們會在超時或者用戶在屏幕其他地方觸摸之后自動消失好啰。Snackbar 可以在屏幕上滑動關(guān)閉。當(dāng)它們出現(xiàn)時疑务,不會阻礙用戶在屏幕上的輸入沾凄,并且也不支持輸入。屏幕上同時最多只能現(xiàn)實一個 Snackbar知允。
方法
創(chuàng)建
make(view,text,duration)
- 第一個參數(shù)是一個view撒蟀,Snackbar 會沿著 view 的樹狀路徑,找到第一個合適的布局或窗口視圖温鸽,如CoordinatorLayout保屯,作為父 view,以寄存所賦的 snackbar 值涤垫。
- 第二個參數(shù)是顯示的文本姑尺,可以是資源索引也可以是字符串
- 第三個參數(shù)是顯示時間。
設(shè)置操作按鈕
setAction(text, listener)
顯示
show()
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null)
.show();
設(shè)置樣式
設(shè)置背景色
背景色是通過getView方法獲取Snackbar的核心視圖蝠猬,然后就可以在對它設(shè)置任意背景色了切蟋。
Snackbar snackbar = Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null);
snackbar.getView().setBackgroundColor(red);
snackbar.show();
設(shè)置字體顏色
前面我們已經(jīng)知道設(shè)置背景色的方法,字體顏色也是大同小異獲取Snackbar的核心視圖后我們知道SnackBar兩個TextView的id分別是snackbar_text和snackbar_action榆芦,只需要對這兩個TextView設(shè)置顏色即可柄粹。
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匆绣。