[Android & Kotlin] Snackbar で通知とアクションを実装する

SnackbarはToastと同じように簡単なメッセージをユーザーに通知できます。更にメッセージと共にボタンタップでのアクションを提示することも可能です。
 
snackbar 01 - [Android & Kotlin] Snackbar で通知とアクションを実装する

Android Studio 4.1.3
API 30

 

R904D.E24336V - [Android & Kotlin] Snackbar で通知とアクションを実装する

Snackbar

 
SnackbarはToastと同じようにある短い期間だけ表示して消えます。
自動的に消えるのがいい場合と残っていて欲しい場合もあり、Snackbarでは表示期間をdismissするまで継続させたりとカスタマイズは色々とできます。

Toastは最近機能が制限されてきて、Snackbarを使うように仕向けられているようにも思います。
 

 

Snackbarの表示

 
SnackbarはToastと似たような設定ですが、引数として「View」を取ります。
因みにToastはContextでした。

なのでViewにattachして表示させる必要があります。
 

 
また、Snackbarのサポートライブラリーが必要です。
 

下は最新のgradleではデフォルトで設定されています。

バージョンは適宜調整してください。
 
Viewをどう持ってくるかなのですが、XMLレイアウトファイルにIDを振る、あるいはandroid.R.id.content が親レイアウトViewを指しているのでこれを使うのが簡単です。

 
ViewBinding では元々root viewを使用しているのでそれを使えます。

 

サンプルコード

 
以下簡単にSnackbarを表示させるコードです。

MainActivity.kt

 
レイアウトはそのままです。
  
これでSnackbarが表示されました。
 
as413k m10b - [Android & Kotlin] Snackbar で通知とアクションを実装する

 

Snackbarのカスタマイズ

 
Snackbarにアクションを設定をしたり、文字色を変えるなどカスタマイズしてみましょう。
setAction()を使うと、バーの右横にmessageが設定されてそれをタップするとアクションが実行されます。Buttonのような感じに使えます。
 

 
カスタマイズとして以下のことをやってみました。

  • LENGTH_INDEFINITE:
    • 表示をdismiss()が呼ばれるまで表示、つまり自動で消えない設定です
  • setAction:
    • ボタンのようにタップでTextViewを変更
  • view.setBackgroundColor():
    • Snackbarの背景色
  • Snackbar:
    • テキスト色、サイズ変更
  • Action:
    • ボタンの背景色と色を変更

 
MainActivity.kt

 
activity_main.xml

 
strings.xml

 

 

サンプル動画

 
setActionのテキストやタップはTextViewやButtonとして設定していけるので、後は色々と変更が可能となります。
 

 
Reference:
Snackbar | Android Developers