SnackBar

srpark·2021년 4월 13일
0


(https://material.io/components/snackbars#usage)

Snackbar 기본 사용법

[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 됐을 때
    }
})

event ->

  • DISMISS_EVENT_ACTION : action click시
  • DISMISS_EVENT_CONSECUTIVE : 새로운 Snackbar 호출시
  • DISMISS_EVENT_MANUAL : dismiss() 호출시
  • DISMISS_EVENT_SWIPE : swipe 했을때
  • DISMISS_EVENT_TIMEOUT : timeout 일때

[4] CoordinatorLayout 사용
Snackbar는 간단한 메세지를 표시하기 좋습니다. window view에 연결하는 Toast와 다르게 View에 연결하여 사용합니다. 그렇기 때문에 연결된 view를 종료하면 Snackbar도 같이 사라집니다.

  • CoordinatorLayout을 사용하면 사용자가 Snackbar를 스와이프하여 닫을 수 있습니다.
  • Activity나 Fragment에서 rootView에 사용하면 CoordinatorLayout 없이 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>
profile
Android_Developer

0개의 댓글