반응형
SnackBar
- Toast의 업그레이드 버전 정도 되는 메시징 도구
- Activity 위에 표시되며 하단에 표시
- 안드 11 부터 기본 toast 는 사용가능 하지만 커스터마이징 하는 것은 snackbar 이용 권장
// 기본 스낵바 설정
binding.button.setOnClickListener {
//스낵바는 os에 기본 내장되어 있지 않고 구글에서 제공하고 잇는 추가 라이브러리를 세팅해 사용
val snack1 = Snackbar.make(it,"기본 스낵바", Snackbar.LENGTH_LONG ) // Snackbar.LENGHT_INDEFINITE
//첫번째 파라미터 : 스낵바를 나타나게 하기 위해 사용할 뷰 (이 예제에서는 버튼)
snack1.setTextColor(Color.RED)
snack1.setBackgroundTint(Color.BLUE)
snack1.animationMode = Snackbar.ANIMATION_MODE_FADE//스낵바가 아래에서 위로 올라오는 것과 같은 애니메이션 모드 변경
// snackbar에 옵션을 줘서 Actoin을 줌 (하나만 설정 가능)
// 클릭 리스너를 람다로 구현 가능
snack1.setAction("Action") {
binding.textView.text = "Action Click"
}
//callback
val callback = object : BaseTransientBottomBar.BaseCallback<Snackbar>() {
override fun onShown(transientBottomBar: Snackbar?) {
super.onShown(transientBottomBar)
binding.textView2.text = "스냅바 나타남"
}
override fun onDismissed(transientBottomBar: Snackbar?, event: Int) {
super.onDismissed(transientBottomBar, event)
binding.textView2.text = "스냅바 사라짐"
}
}
snack1.addCallback(callback)
snack1.show()
}
스낵바 커스텀
- 새로운 view를 설정하는 메서드나 프로퍼티 없음 -> 스낵바 구성에 필요한 원래 layout(스낵바에 원래 존재)을 추출해 거기에 view를 추가
// 커스텀 스낵바
binding.button2.setOnClickListener {
//스낵바 만들기
val snack2 = Snackbar.make(it,"커스텀 스낵바", Snackbar.LENGTH_LONG )
var snack_binding: CustomSnackBinding = CustomSnackBinding.inflate(layoutInflater)
//이미지, 텍스트 바꿔주기
snack_binding.snackImg.setImageResource(R.drawable.custom_img)
snack_binding.snackText.text = "새로 추가된 뷰"
snack_binding.snackText.setTextColor(Color.WHITE)
//커스텀할 뷰 만들기
val snackView = snack_binding.root
//스낵바 객체에 내재된 레이아웃 추출
val snackbarLayout = snack2.view as Snackbar.SnackbarLayout
snackbarLayout.addView(snackView) //뷰 추가하기
//스낵바에 있는 텍스트뷰를 추출해 이를 보이지 않게 처리
//스낵바 객체에서 추출한 레이아웃에서 findViewById로 텍스트뷰 객체를 추출
val snackText = snackbarLayout.findViewById<TextView>(com.google.android.material.R.id.snackbar_text)
snackText.visibility = View.INVISIBLE
snack2.show()
}
반응형
'Android' 카테고리의 다른 글
[안드로이드/메시징] Notification (0) | 2023.04.11 |
---|---|
[안드로이드/메시징] Dialog (0) | 2023.04.10 |
[안드로이드/메시징] Toast (0) | 2023.03.31 |
[안드로이드/Activity] Activity Action (0) | 2023.03.31 |
[안드로이드/Build Error] Appcompat 버전 문제 (0) | 2023.03.25 |