본문 바로가기
안드로이드 자바

[JAVA][Android]Toast 메시지 위치 변경해 보여주기(1)

by teamnova 2024. 10. 30.
728x90

오늘은 액티비티에서 Toast 메시지가 보여지는 위치를 변경하는 예시를 만들어 보겠습니다.

 

Toast는 사용자를 위한 간단한 메시지를 보여주는 뷰입니다. setGravity() 메서드를 활용하면 보여지는 위치 조정이 가능합니다.

 

 

 

레이아웃 xml 파일 코드 (activity_main)

<?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:gravity="center">

    <Button
        android:id="@+id/button_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Toast 위치 변경" />
</LinearLayout>

 

 

 

 

액티비티 자바 코드

public class MainActivity extends AppCompatActivity {

    private int currentGravity = Gravity.BOTTOM; // Toast 메세지 위치 설정 변수

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

        Button buttonToast = findViewById(R.id.button_toast); // Toast 위치 변경 후 보여주기 버튼

        //버튼 이벤트 설정
        buttonToast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Toast 보여줄 위치 변경 후 보여주기
                changeToastPosition();
            }
        });
    }

    //Toast 위치변경 후 보여주기 메서드
    private void changeToastPosition() {
        // Toast 메시지 생성
        Toast toast = Toast.makeText(getApplicationContext(), "Toast 위치 변경!", Toast.LENGTH_SHORT);

        // 현재 위치에 따라 다음 위치 설정
        switch (currentGravity) {
            case Gravity.BOTTOM:
                currentGravity = Gravity.CENTER;
                break;
            case Gravity.CENTER:
                currentGravity = Gravity.TOP;
                break;
            case Gravity.TOP:
                currentGravity = Gravity.BOTTOM;
                break;
        }

        // Toast 메시지 위치 설정
        toast.setGravity(currentGravity | Gravity.CENTER_HORIZONTAL, 0, 100);
        //setgravity(매개변수1, 매개변수2, 매개변수3): Toast 메세지가 나타날 위치를 설정하는 메서드
        //매개변수1: 개체를 배치하기 위해 사용하는 grvity 상수 값
        //매개변수2: gravity 기준 Toast 메세지 수평위치 추가 조정용 값(픽셀 단위), 양수는 오른쪽 이동, 음수는 왼쪽 이동
        //매개변수3: gravity 기준 Toast 메세지 수직위치 추가 조정용 값(픽셀 단위), 양수는 아래로 이동, 음수는 위로 이동
        

        // Toast 메시지 표시
        toast.show();
    }
}




 

 

 

 

 

 

 

 

실행 영상

 

Toast 메시지 보이는 위치가 변경된 것을 확인할 수 있습니다.

 

 

 

주의

Android API 30 이후 부턴 makeText() 메서드를 사용한 경우 처럼 text 전용 Toast 메시지에선 setgravity()는 동작하지 않습니다.

API 30 이후에도 위치변경을 하고싶으시다면 아래 링크를 참고해주세요.

 

https://stickode.tistory.com/1329

(11월 5일 부터 열람 가능)