(kotlin) Snackbar

박용석·2023년 8월 29일
0

Snackbar

Snackbar는 Toast와 마찬가지로 팝업창의 형태로 나타난다.

Snackbar와 Toast의 차이점

  • Toast는 API 1 레벨에 추가된 기능이며 기본적으로 액티비티가 필요하지 않다. 사용자 입력에 의한 액션을 포함할 수 없으며 스와이프, 클릭 등 사용자 입력을 처리할 수 없다.

  • Snackbar는 API 23레벨에 추가된 기능이며 액션을 포함할 수 있으며 사용자 입력을 처리할 수도 있고 스와이프로 스크린에서 지울 수도 있다. 또한 FAB(Floating Action Button)를 포함한 스크린의 모든 요소들 위에 있다. 그리고 사용자에게 주의가 필요한 경고/정보/피드백 메시지를 표시하는데 적합하다.

    Snackbar는 대해 간단한 예제로 알아보자.

MainActivity.kt

package com.example.snackbar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import com.example.snackbar.databinding.ActivityMainBinding
import com.google.android.material.snackbar.Snackbar

class MainActivity : AppCompatActivity() {
    private lateinit var binding : ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.btnBasicSnackbar.setOnClickListener {
            Snackbar.make(binding.root, "기본 스낵바 메시지 입니다.", Snackbar.LENGTH_SHORT).show()
        }

        binding.btnCheckSnackbar.setOnClickListener {
            val checkSnackbar = Snackbar.make(binding.root, "확인을 누르면 메시지가 뜹니다.", Snackbar.LENGTH_LONG)
                .setAction("확인",)  {
                    Snackbar.make(binding.root, "확인을 눌러서 나온 메시지 입니다.", Snackbar.LENGTH_LONG).show()
                }
            checkSnackbar.show()
        }

    }
}
  • 각 파라미터는 (현재 View, 보여줄 메시지, 지속시간)으로 구성

  • 뷰 바인딩을 사용하지 않은 경우에는 binding.root 대신 layout에 id를 주고 findViewById로 변수를 만들어 입력해주면 된다. ex) val view : View = FindViewById(R.id.레이아웃id)

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_basic_snackbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/lemon"
        android:paddingHorizontal="25dp"
        android:text="basic snackbar"
        android:textColor="@color/black"
        android:textSize="18dp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btn_check_snackbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:backgroundTint="@color/orange"
        android:text="check snackbar"
        android:textColor="@color/black"
        android:textSize="18dp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_basic_snackbar" />
</androidx.constraintlayout.widget.ConstraintLayout>

결과물

Snackbar는 Toast보다 쓰임이 훨씬 다양할 것 같다. 공부하면서 다른 사용방법을 알게되면 다시 정리해서 올리는 시간을 가져야겠다.

profile
슬기로운 개발 활동

3개의 댓글

comment-user-thumbnail
2023년 8월 30일

Snackbar는 Toast보다 쓰임이 훨씬 다양할 것 같다
어떤 쓰임이 있는지 설명해주세욯 ㅎㅎㅎㅎㅎ

답글 달기
comment-user-thumbnail
2023년 8월 31일

와 대박 너무 정리를 잘해주셔서 이해가 쏙쏙 되는데여???
덕분에 스낵바 마스터하고 가는 느낌이네요!!!👍👍

답글 달기
comment-user-thumbnail
2023년 9월 1일

오 코드로도 이해하기 쉽게 설명해 주시고 영상으로 예시가 있어서 이해하기 정말 쉽게 잘 정리하신거 같아요

답글 달기