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일 부터 열람 가능)
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android]Toast 메시지 위치 변경해 보여주기(2) (0) | 2024.11.05 |
---|---|
[JAVA][Android] ViewTreeObserver 사용 하여 레이아웃 크기 측정과 상태 전환 다루기 (0) | 2024.11.04 |
[JAVA][Android] ViewStub 사용해서 레이아웃 관리하기 (2) | 2024.10.29 |
[Java][Android] 토스트(Toast) 메시지 커스텀하기 (2) | 2024.10.27 |
[JAVA][Android] Palette를 사용하여 이미지, 사진 색상 정보 추출하기 (6) | 2024.10.23 |