본문 바로가기

Android/공부

커스텀 스낵바, 커스텀 토스트 만들기

1. 커스텀 스낵바 만들기

private fun showSnackBar(view: View, message: String, action: String?, clickListener : View.OnClickListener?) {
    val snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG)
        .setTextColor(
            ColorStateList.valueOf(
                ContextCompat.getColor(this, R.color.white)))
        .setActionTextColor(ColorStateList.valueOf(
            ContextCompat.getColor(this, R.color.mackduck_yellow)))
    snackbar.setBackgroundTintList(
        ColorStateList.valueOf(
            ContextCompat.getColor(this, R.color.box_gray)))
    if (action != null) {
        snackbar.setAction(action, clickListener)
    }
    snackbar.show()
}

1) view

스낵바가 표시될 view를 전달합니다.

2) message

스낵바에 표시될 메시지를 설정합니다.

3) action

스낵바에서 액션 부분에 해당하는 메시지를 설정합니다.

만일 액션이 없는 경우도 존재할 수 있으므로, ?를 통해 null 처리를 해줍니다.

4) clickListener

액션 부분을 눌렀을 때 특정 동작이 수행되도록 파라미터로 전달합니다.

이 경우도 마찬가지로 액션이 없는 경우가 있을 수 있으므로, ?를 통해 null 처리를 합니다.

2. 사용 방법

showSnackBar(binding.myCoordi, "사진을 가져오기 위해서는 저장소 권한이 필요합니다.", "권한 승인", clickListener)

다음과 같이 사용하면 아래처럼 화면에 표시됩니다.

3. 커스텀 토스트 메시지

    fun showCustomToast(message: String) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
    }

1) message

띄울 메시지를 설정합니다.

4. 사용 방법

showCustomToast("권한을 설정해야 기능을 사용할 수 있습니다.")

이렇게 하면 아래처럼 토스트 메시지가 띄워집니다.

728x90
반응형