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보다 쓰임이 훨씬 다양할 것 같다. 공부하면서 다른 사용방법을 알게되면 다시 정리해서 올리는 시간을 가져야겠다.
Snackbar는 Toast보다 쓰임이 훨씬 다양할 것 같다
어떤 쓰임이 있는지 설명해주세욯 ㅎㅎㅎㅎㅎ