Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

토스트 개요

토스트는 작은 팝업으로 작업에 관한 간단한 피드백을 제공합니다. 메시지에 필요한 공간만 차지하며 진행 중인 활동은 그대로 표시되고 상호작용도 유지됩니다. 토스트는 시간이 초과하면 자동으로 사라집니다.

예를 들어, 이메일에서 Send를 클릭하면 아래의 화면 캡처와 같이 '메시지를 보내는 중...'이라는 토스트가 트리거됩니다.

상태 메시지에 사용자 응답이 필요하다면 알림을 사용하는 것이 좋습니다.

기본 사항

먼저, makeText() 메서드 중에 하나를 사용하여 Toast 객체를 인스턴스화합니다. 이 메서드는 애플리케이션 Context, SMS 및 토스트의 지속 시간 이렇게 세 가지 매개변수를 사용합니다. 이 메서드는 올바르게 초기화된 토스트 객체를 반환합니다. 아래 예와 같이 show()를 사용하여 토스트 알림을 표시할 수 있습니다.

Kotlin

    val text = "Hello toast!"
    val duration = Toast.LENGTH_SHORT

    val toast = Toast.makeText(applicationContext, text, duration)
    toast.show()
    

자바

    Context context = getApplicationContext();
    CharSequence text = "Hello toast!";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
    

이 예는 대부분의 토스트 알림에서 필요한 모든 것을 보여줍니다. 이 외에 필요한 것은 거의 없습니다. 그러나 토스트의 위치를 다르게 지정하거나 단순한 SMS 대신 자체 레이아웃을 사용하는 것이 좋습니다. 다음 섹션에서는 이런 작업을 하는 방법에 관해 설명합니다.

다음과 같이 메서드를 연결하여 토스트 객체를 유지하지 않을 수도 있습니다.

Kotlin

    Toast.makeText(context, text, duration).show()
    

자바

    Toast.makeText(context, text, duration).show();
    

토스트 위치 지정

일반적인 토스트 알림은 화면 하단에 표시되며 가로로 가운데 맞춤됩니다. setGravity(int, int, int) 메서드를 사용하여 이 위치를 변경할 수 있습니다. 이 메서드는 Gravity 상수, x-좌표 오프셋 및 y-좌표 오프셋의 세 가지 매개변수를 사용합니다.

예를 들어, 토스트를 왼쪽 상단에 표시하려면 중력을 다음과 같이 설정하면 됩니다.

Kotlin

    toast.setGravity(Gravity.TOP or Gravity.LEFT, 0, 0)
    

자바

    toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
    

위치를 오른쪽으로 조금 이동하려면 두 번째 매개변수의 값을 늘립니다. 아래로 조금 이동하려면 마지막 매개변수의 값을 늘립니다.

맞춤 토스트 뷰 만들기

단순한 텍스트 메시지로 충분하지 않다면 토스트 알림용 맞춤설정된 레이아웃을 만들 수 있습니다. 맞춤 레이아웃을 만들려면 XML 또는 애플리케이션 코드에 뷰 레이아웃을 정의하고 루트 View 객체를 setView(View) 메서드에 전달합니다.

다음 스니펫에는 토스트 알림용으로 맞춤설정된 레이아웃이 포함되어 있습니다(layout/custom_toast.xml로 저장됨).

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/custom_toast_container"
                  android:orientation="horizontal"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:padding="8dp"
                  android:background="#DAAA"
                  >
        <ImageView android:src="@drawable/droid"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_marginRight="8dp"
                   />
        <TextView android:id="@+id/text"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:textColor="#FFF"
                  />
    </LinearLayout>
    

LinearLayout 요소의 ID는 'custom_toast_container'임을 확인하세요. 다음과 같이 이 ID와 XML 레이아웃 파일 'custom_toast'의 ID를 사용하여 레이아웃을 확장해야 합니다.

Kotlin

    val inflater = layoutInflater
    val container: ViewGroup = findViewById(R.id.custom_toast_container)
    val layout: ViewGroup = inflater.inflate(R.layout.custom_toast, container)
    val text: TextView = layout.findViewById(R.id.text)
    text.text = "This is a custom toast"
    with (Toast(applicationContext)) {
        setGravity(Gravity.CENTER_VERTICAL, 0, 0)
        duration = Toast.LENGTH_LONG
        view = layout
        show()
    }
    

자바

    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.custom_toast,
                    (ViewGroup) findViewById(R.id.custom_toast_container));

    TextView text = (TextView) layout.findViewById(R.id.text);
    text.setText("This is a custom toast");

    Toast toast = new Toast(getApplicationContext());
    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.setView(layout);
    toast.show();
    

먼저, getLayoutInflater()(또는 getSystemService())를 사용하여 LayoutInflater를 가져온 다음 inflate(int, ViewGroup)를 사용하여 XML에서 레이아웃을 확장합니다. 첫 번째 매개변수는 레이아웃 리소스 ID이고 두 번째는 루트 뷰입니다. 이 확장된 레이아웃을 사용하여 레이아웃에서 더 많은 뷰 객체를 찾을 수 있으므로 이제 ImageView와 TextView 요소의 콘텐츠를 캡처하고 정의할 수 있습니다. 마지막으로 Toast(Context)를 사용하여 새 토스트를 만들고 토스트의 일부 속성(예: 중력 및 지속 시간)을 설정합니다. 그런 다음 setView(View)를 호출하고 확장된 레이아웃을 전달합니다. 이제 show()를 호출하여 맞춤 레이아웃으로 토스트를 표시할 수 있습니다.

참고: setView(View)를 사용하여 레이아웃을 정의하지 않는 한 토스트에 공개 생성자를 사용하지 마세요. 사용할 맞춤 레이아웃이 없다면 makeText(Context, int, int)를 사용하여 토스트를 만들어야 합니다.