안드로이드 토스트 메시지는 간단하게 안드로이드 화면 중앙에 회색에 둥근 모서리를 가지던 많은 어플이 결과를 알려주던 흔히보던 그것이다.

다음과 같이 생겼다.


토스트 생성
토스트를 생성하는 메서드는 다음과 같이 정의되어 있다.

static Toast makeText(Context context, int resId, int duration)
static Toast makeText(Context context, CharSequence text, int duration)

매개변수에 대해서 설명하자면,

context : 액티비티를 전달해주면 됨.
resId : 출력할 문자열을 리소스(xml)파일에서 불러옴.
text : 출력할 문자열
duration : 출력할 시간

근데 여기서 duration은 뭔가 시간을 입력할 수 있는 것 처럼 되있지만, 실은 지정된 시간 2가지 중에서 택 1이다.

LENGTH_SHORT
LENGTH_LONG

짧거나, 긴 것 중에서 하나 택하면 된다.

토스트를 만들었으면, 생성과 삭제는 다음 메서드로 한다.

void show()
void cancel()

show는 보여주고 cancel은 즉시 취소한다.


위치 조정 메서드
위치 조정은 그렇게 쓰일 일이 없을 것이다. 그냥 원래대로 쓰는 편이 깔끔하기 때문에.

void setGravity(int graity, int xOffset, int yOffset)
void setMargin(flaot horizontalMargin, float verticalMargin)


내용 변경 메서드
토스트 메시지의 내용을 변경하는 것들이다.
void setText(CharSequence s)
void setDuration(int duration)
void setView(View view)

setText는 내용을 바꾸는 것이고, Duration은 위에 나온 지속시간이다.
생소한 것은 setView인데. 토스트 메시지에 뷰를 담아 띄울 수 있다.


예제 1



안드로이드 스튜디오에서 기본으로 프로젝트를 만들면 레이아웃에 Hello World라는 텍스트 뷰가 생성되어 있는데. 그냥 별 의미없으니 무시하고.


package net.kimig.android.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toast.makeText(MainActivity.this, "토스트 메시지 테스트", Toast.LENGTH_LONG).show();
    }
}

검정색은 기본으로 입력되어 있는것, 초록색은 IDE에서 자동완성 해주는 것, 빨간색이 입력한 것이다.

Toast.makeText로 토스트를 만들고 그걸 바로 show()를 통해서 표시하였다.

예제 2
예제 2번은 뷰를 토스트메시지로 띄워보았다.


Hello World!는 원래 있었고 없었던 텍스트 뷰가 두개 생겼는데. 잠시 동안 떠있는 토스트 메시지이다.
렐러티브 레이아웃 자체를 뷰로 가져왔기 때문에 화면 전체를 토스트뷰로 채우기 때문에 그런 것.

#MainActivity
package net.kim19.android.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toast toast = Toast.makeText(MainActivity.this, "", Toast.LENGTH_LONG);
        toast.setView(RelativeLayout.inflate(MainActivity.this, R.layout.test_view, null));
        toast.show();
    }
}

빨간 부분이 중요한 부분이다. makeText를 통해서 일단 객체를 만들고, setView를 통해서 뷰를 설정한다.
뷰는 inflate를 통해서 레이아웃을 갖고 왔다.

그리고 .show()로 표시.


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

    <TextView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="뷰 토스트 테스트"
        android:background="#00ff00"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:text="하나만 있으면 심심하니까."/>
</RelativeLayout>

이건 그냥 레이아웃 파일이다. 본인이 테스트 해보고 싶은 대로 알아서 예쁘게 작성하자.

마무리
지금까지 안드로이드 토스트 메시지에 대해서 다루었다.
간략하게 출력할 수 있는 방법이므로, 개발 중에 테스트를 할 때. 공지한다던지 하는 등으로 유용하게 사용하거나 유저에게 간략하게 메시지를 보낼 때 등에 유용하게 사용할 수 있다.