(https://material.io/components/snackbars#usage)
[1] Show
val snackbar = Snackbar.make(view, "SnackBar Show !", Snackbar.LENGTH_SHORT)
snackbar.show()
[2] Action
snackbar.setAction("Action") {
// 버튼을 눌렀을 때 액션
}
[3] Callback
Snackbar의 Callback 메소드로 event 상태를 알 수 있고, 상황에 맞는 설정을 할 수 있습니다.
snackbar.addCallback(object : Snackbar.Callback() {
override fun onDismissed(transientBottomBar: Snackbar?, event: Int) {
super.onDismissed(transientBottomBar, event)
// Dismiss 됐을 때 event 상태에 따른 처리
}
override fun onShown(sb: Snackbar?) {
super.onShown(sb)
// show 됐을 때
}
})
[4] CoordinatorLayout 사용
Snackbar는 간단한 메세지를 표시하기 좋습니다. window view에 연결하는 Toast와 다르게 View에 연결하여 사용합니다. 그렇기 때문에 연결된 view를 종료하면 Snackbar도 같이 사라집니다.
하지만, Dialog나 BottomSheetDialogFragment에서 사용 시에 snackbar를 show() 해도 보이지 않는 경우가 발생합니다. 이때, CoordinatorLayout으로 감싸주면 문제없이 작동합니다.
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- elements… -->
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>