Snackbarを実装する


Snackbar

GmailやGoogleKeepアプリでアイテムをアーカイブしたとき、画面下部に出る通知を実装したかったのですが、名前が分からずずっと調べていました。
「Snackbar」というみたいですね。使用するときは下記の通り。

snackbar.kt
Snackbar.make(View, "削除しました", Snackbar.LENGTH_SHORT).show()

このような表示になります。(Floating Action Buttonに重なっていますが)
※6月3日追記:親レイアウトをCoordinatorLayoutにすることで重なりを回避できます。

アクションの追加

行った操作を元に戻すなど、Snackbarにアクションを加えたい場合はsetActionメソッドを使い、OnClickListenerを実装します。

snackbar.kt
Snackbar.make(view, "削除しました", Snackbar.LENGTH_LONG).setAction("元に戻す", View.OnClickListener { 
                    // アクションの処理
                }).show

Callback(6月3日追記)

Snackbarの通知が表示されたとき、もしくは消えたときに何らかの処理を行いたい場合は、Snackbar.addCallbackを使い
onShown / onDismissed をオーバーライドします。

callback.kt
val snackbar = Snackbar.make(view, "削除しました", Snackbar.LENGTH_LONG)
snackbar.addCallback(object : BaseTransientBottomBar.BaseCallback<Snackbar>() {
    override fun onShown(transientBottomBar: Snackbar?) {
        super.onShown(transientBottomBar)
    }    
    override fun onDismissed(transientBottomBar: Snackbar?, event: Int) {
        super.onDismissed(transientBottomBar, event)
    }
})

参考