還在用 Toast?試試 Snackbar!

發表於2016-07-11

SnackBar是 Android Support Library 22.2.0 裡面新增提供的一個控制元件,可以把它理解成一個加強版的Toast,或者是一個輕量級的Dialog。SnackBar預設從螢幕底部彈出,像Toast一樣會自動消失,當然也可以手動劃出螢幕消失。Toast是不能互動的,而如果需要,SnackBar預設是可以新增一個點選事件的。官方也是推薦使用Snackbar代替Toast,你的專案中還在用Toast嗎?不妨試試炫酷的SnackBar!

1187237-e5095cb3496b3bf7

snackbar.gif

Snackbar的用法幾乎和Toast一毛一樣:

Toast這麼寫:

Snackbar這麼寫:

二者都有三個引數,區別就在於第一個引數,其中Toast傳入的是Context,而Snackbar傳入的是View。Context已無需多講,而Snackbar的引數中傳入一個View是幾個意思呢?先說下Toast吧,其實Toast是個系統級視窗,相當於懸浮在所有View的上面。而SnackBar卻不是這樣,它需要有一個View來承載,SnackBar會遍歷整個View Tree來找到一個合適的View承載SnackBar的View,如果你想要實現上面的動畫互動效果的話最好是傳入CoordinatorLayout物件,而如果傳入RelativeLayout或者LinearLayout是不會有動畫效果的。那CoordinatorLayout是個什麼玩意呢?以後有機會再專門介紹吧,這裡就先不講了。

前面已經說了Snackbar可以加一個點選事件,加起來有相當簡單:

1187237-33354b066b8eb47b

click.gif

我去,按鈕(“點我”)居然是玫紅色,不要擔心,這個當然是可以自定義的,只需要加一個顏色就好。

這樣就變成了白色。

另外SnackBar還貼心的提供了關於show和dismiss的回撥方法:

儘管Snackbar已經很炫酷很漂亮,但我知道它依然無法滿足你不走尋常路的心,那要不然我們再想辦法自定義一個唄。那我們先改變下Snackbar的背景色或者背景圖吧。
1187237-9316cdd20efc7bd8

1.pic.png

什麼?你還不滿意,還要改變顯示位置?還要加個icon?動畫也要改一改?沒關係,都可以。

1187237-eb0aa5aafaa520c4

snackbar.png

程式碼略亂,童鞋們可以根據自己的業務需求做封裝。

相關文章