본문 바로가기
개발

안드로이드 토스트 메세지(Toast Message) 만들기

by 마스터누누 2020. 6. 17.
728x90
반응형

토스트 메세지란(Toast Message)?

토스트 메세지란 짧은 메세지를 유저에게 노출 시킨 후 일정 시간이 지나면 사라지는 팝업이다. 우리가 앱에서 흔히 볼수 있는 뒤로가기를 눌렀을때 "뒤로가기를 한 번 더 누르면 앱이 종료됩니다."라고 뜨는 팝업이 토스트 메세지 이다.

 

기본적인 코드는 다음과 같다.

 

val myToast = Toast.makeText(applicationContext, "Hello, World!", Toast.LENGTH_SHORT)
myToast.show()

 

여기서 첫번째 인자는 컨텍스트, 두번째는 노출할 메세지, 세번째 인자는 Toast.LENGTH_SHORT는 Duration, 즉 노출 시간을 전달한다. 노출 시간은 Toast내에 static하게 LENGTH_SHORT와 LENGTH_LONG으로 정의 되어있다. 해당 시간의 길이는 각각 4초(4000ms)7초(7000ms) 가량이다.

 

 

예제

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        findViewById<Button>(R.id.button).setOnClickListener {
            showToastMessage()
        }
    }

    private fun showToastMessage() {
        val myToast = Toast.makeText(applicationContext, "Hello, World!", Toast.LENGTH_SHORT)
        myToast.show()
    }
}

 

단순히 버튼을 클릭했을 때 토스트를 띄우는 코드이다. 레이아웃에 버튼 하나이므로 xml 코드는 첨부하지 않는다.

 

 

결과

토스트로 Hello, World!가 출력된다.

 

커스텀 토스트 메세지

다음으로 유저가 커스텀으로 토스트 메세지를 만드는 방법에 대해 알아보자. 이 예제를 통해 우리는 기본적인 UI 가 아니라 배경이나 글자색이 변경된, 나만의 토스트 메세지를 만들어 볼 수 있다.

 

예제

layout_toast.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/text_toast"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#9c9c9c"
    android:layout_gravity="center"
    android:paddingHorizontal="20dp"
    android:paddingVertical="10dp"
    android:textColor="#3c3c3c"
    tools:text="커스텀 토스트 메세지가 들어갈 자리입니다." />

실제로 출력될 토스트 메세지 디자인이다. 텍스트 뷰의 background나 padding, textColor, textSize 등을 원하는대로 바꿔보자

 

CustomToast.kt

class CustomToast(context: Context, message: String) : Toast(context) {

    init {
        val view = LayoutInflater.from(context).inflate(R.layout.layout_toast, null)
        view.findViewById<TextView>(R.id.text_toast).apply {
            text = message
        }
        setView(view)
        duration = Toast.LENGTH_SHORT
    }
}

Toast를 상속 받는 CustomToast 클래스이다. 메세지를 인자로 받아 findViewById로 TextView와 연결시켜 준다. 

 

MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        findViewById<Button>(R.id.button).setOnClickListener {
            showToastMessage()
        }
    }

    private fun showToastMessage() {
        CustomToast(applicationContext, "Hello, World!").show()
    }
}

클릭 시 토스트 메세지가 노출되도록한다. CustomToast는 Toast를 상속받았으므로 단순히 인자를 넘겨 인스턴스를 생성한 후 show() 메서드를 호출하면 된다.

 

결과

커스텀하게 설정된 토스트 메세지 출력

 

토스트 메세지 참고 자료: 

https://developer.android.com/guide/topics/ui/notifiers/toasts

 

반응형

댓글