안드로이드 토스트란 무엇인가?
예제를 살펴보기 전에 안드로이드에서 토스트(Toast)가 무엇인지 먼저 이해할 필요가 있습니다. 토스트는 java.lang.Object의 하위 클래스로, 화면에 짧은 메시지를 잠깐 보여준 뒤 자동으로 사라지는 UI 요소입니다. 사용자에게 간단한 알림을 전달할 때 매우 유용하게 사용됩니다.
이번 글에서는 안드로이드에서 토스트의 표시 위치를 변경하는 방법을 단계별로 알아보겠습니다.
1단계: 새 프로젝트 생성
Android Studio에서 새 프로젝트를 생성합니다. 상단 메뉴에서 File ⇒ New Project를 선택하고, 프로젝트 생성에 필요한 모든 정보를 입력합니다.
2단계: 레이아웃 파일 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
android:id = "@+id/parent"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".MainActivity"
android:gravity = "center"
android:background = "#33FFFF00"
android:orientation = "vertical">
<TextView
android:id = "@+id/text"
android:textSize = "18sp"
android:textAlignment = "center"
android:text = "click to show toast at top"
android:layout_width = "match_parent"
android:layout_height = "wrap_content" />
</LinearLayout>위 코드에서는 하나의 TextView를 배치했습니다. 사용자가 이 TextView를 클릭하면 화면 상단에 토스트가 나타나도록 구현할 것입니다.
3단계: MainActivity 작성
src/MainActivity.java 파일에 다음 코드를 추가합니다.
package com.example.andy.myapplication;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.support.annotation.RequiresApi;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
int view = R.layout.activity_main;
TextView text;
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(view);
text = findViewById(R.id.text);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast toast = Toast.makeText(MainActivity.this,"Sample Toast",Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP,0,250);
toast.show();
}
});
}
}토스트 위치 설정의 핵심: setGravity()
토스트의 위치를 지정하기 위해 X축 오프셋과 Y축 오프셋 값을 함께 넘겨주며 gravity를 설정했습니다. 핵심 코드는 아래와 같습니다.
Toast toast = Toast.makeText(MainActivity.this,"Sample Toast",Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP,0,250); toast.show();
여기서 setGravity(Gravity.TOP, 0, 250)은 토스트를 화면 상단(TOP)에 표시하고, Y축 방향으로 250픽셀만큼 아래로 내려서 배치한다는 의미입니다. Gravity 값과 오프셋 숫자를 조절하면 원하는 어떤 위치든 자유롭게 지정할 수 있습니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run 아이콘을 클릭하세요. 목록에서 본인의 모바일 기기를 선택하면 앱이 설치되고 실행됩니다.
앱이 실행되면 먼저 아래와 같은 기본 화면이 표시됩니다.

기본 화면에서 TextView를 클릭하면, gravity 설정대로 화면 상단에 토스트가 나타나는 것을 확인할 수 있습니다.

마무리 정리
이처럼 setGravity() 메서드를 활용하면 기본적으로 하단 중앙에 표시되는 토스트의 위치를 화면 상단, 중앙 등 원하는 곳으로 손쉽게 변경할 수 있습니다. Gravity 상수(Gravity.TOP, Gravity.CENTER, Gravity.BOTTOM 등)와 x/y 오프셋 값을 조합하여 다양한 위치 조정이 가능하다는 점을 기억해 두세요.