Kotlin

[android : kotlin] 코틀린 토스트 메시지(Toast) 및 커스텀 토스트 메시지 사용 예제 : 총정리

토스트 메시지는 사용자에게 간단한 메시지를 전달할 때 사용한다.

토스트 메시지를 띄우기 위해 코드를 먼저 살펴보자.

Toast.makeText(this, "기본 토스트 메세지"
, Toast.LENGTH_SHORT)
.show()

자바언어로 코딩하는 방법과 코틀린언어로 코딩하는 방법이 동일하다. 차이점이라고 한다면 세미콜론(;)이 없다는 것!!!

기본 토스트는 화면 하단에 나타났다가 사라지는 메시지 박스 이다. 사용자가 앱을 사용할 때 사용자에게 방해가 되지 않는다. 가독성이 좋은 짧은 문장을 사용자에게 알려야할 때 사용하는 것을 권장한다. 너무 긴 메시지는 사용자가 모두 읽기도 전에 사라지기 때문에 주의를 해야한다. 사용자가 꼭 확인해야할 메시지라면 다이얼로그(Dialog)를 사용하기 바란다.

토스트(Toast) Toast.makeText()메서드를 사용하여 메세지를 사용자에게 보여줄 수 있다. Toast.LENGTH_SHORT는 2초 정도 짧은 메시지를 보여주고 사라진다. Toast.LENGTH_LONG은 약 4초 정도 메시지를 보여주고 사라진다.

setBackgroundResource()메서드를 사용하여 토스트 메시지의 배경을 변경할 수 있다.

 

메서드(함수)를 만들어 토스트 메시지를 호출하여 사용하면 편리하다.

    fun shortToastShow(text: String) {
        Toast.makeText(this, text, Toast.LENGTH_SHORT).show()
    }

    fun longToastShow(text: String) {
        Toast.makeText(this, text, Toast.LENGTH_LONG).show()
    }

4가지의 토스트 메시지를 만들어보자


[MainActivity.kt]

package edu.kotlin.study

import android.app.DatePickerDialog
import android.app.TimePickerDialog
import android.content.DialogInterface
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.Gravity
import android.widget.*
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main.textView1
import kotlinx.android.synthetic.main.custom_simple_list_item_1.*
import java.util.*
import kotlin.collections.ArrayList

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        d_button1.setOnClickListener {
            Toast.makeText(this, "기본 토스트 메시지", Toast.LENGTH_SHORT).show()
        }

        d_button2.setOnClickListener {
            val toast = Toast.makeText(this, "화면 중앙 토스트 메시지", Toast.LENGTH_SHORT)
            toast.setGravity(Gravity.CENTER, 0, 0)
            toast.show()
        }

        d_button3.setOnClickListener {
            val toast = Toast.makeText(this, "화면 상단 토스트 메시지", Toast.LENGTH_SHORT)
            //toast.setGravity(Gravity.TOP or Gravity.LEFT, 0, 0)
            toast.setGravity(Gravity.TOP, 0, 0)
            toast.show()
        }


        d_button4.setOnClickListener {
 
            var view1 = layoutInflater.inflate(R.layout.custom_toast_layout, null)

            var imageView1: ImageView? = view1.findViewById(R.id.itm_img1)
            imageView1?.setImageResource(R.drawable.blue_sky)

            var textView1: TextView? = view1.findViewById(R.id.itm_text1)
            textView1?.text = "커스텀 토스트 메시지"
            //textView1?.setTextColor(Color.YELLOW)
            view1.setBackgroundResource(android.R.drawable.toast_frame)

            var toast = Toast(this)
            toast.view = view1
            //toast.setGravity(Gravity.CENTER, 0, 0)  //화면 가운데
            toast.show()
 
        }

    }
}

[activity_main.xml]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="텍스트뷰"
        android:textAppearance="@style/TextAppearance.AppCompat.Display2" />


    <Button
        android:id="@+id/d_button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="기본 토스트 메시지" />

    <Button
        android:id="@+id/d_button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="화면 중앙 토스트 메시지" />

    <Button
        android:id="@+id/d_button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="화면 상단 토스트 메시지" />

    <Button
        android:id="@+id/d_button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="커스텀 토스트 메시지" />
</LinearLayout>

[custom_toast_layout.xml]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/itm_img1"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginRight="8dp"
        tools:srcCompat="@tools:sample/avatars" />

        <TextView
            android:id="@+id/itm_text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="TextView"
            android:textAppearance="@style/TextAppearance.AppCompat.Display2" />



</LinearLayout>

 

[build.gradle(:app)]

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 29

    defaultConfig {
        applicationId "edu.kotlin.study"
        minSdkVersion 22
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.1'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

}

[REFERENCE]

토스트 개요 – Android Developer

 

Leave a Reply

error: Content is protected !!