Durum mesajlarına genel bakış

Durum mesajı (toast), küçük bir pop-up'ta görünüren bir işlemle ilgili basit geri bildirim sağlar. Yalnızca mesajın görünmesine yetecek kadar bir alan kaplar. Mevcut etkinlik ekranda görünmeye ve etkileşim halinde olmaya devam eder. Belirli bir zaman aşımından sonra durum mesajı otomatik olarak kaybolur.

Örneğin, bir e-postada Gönder düğmesi tıklandığında, aşağıdaki ekran görüntüsündekine benzer bir "Mesaj gönderiliyor..." durum mesajı tetiklenir:

Kullanıcının bir durum mesajına yanıt vermesi gerekiyorsa bunun yerine bir Bildirim kullanma seçeneğini değerlendirebilirsiniz.

Temel Bilgiler

İlk olarak, makeText() yöntemlerinden biriyle bir Toast nesnesinin örneğini oluşturun. Bu yöntem üç parametre alır: uygulama Context parametresi, kısa mesaj ve durum mesajının süresi. Doğru şekilde başlatılmış bir Toast nesnesi döndürür. Durum mesajı bildirimini, aşağıdaki örnekte gösterildiği gibi show() işlevi ile görüntüleyebilirsiniz:

Kotlin

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

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

Java

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

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

Bu örnekte, çoğu durum mesajı bildiriminde ihtiyaç duyacağınız her şey gösterilmektedir. Başka bir şeye nadiren ihtiyacınız olur. Bununla birlikte, durum mesajının yerini değiştirmek, hatta basit bir kısa mesaj yerine kendi düzeninizi kullanmak isteyebilirsiniz. Aşağıdaki bölümlerde bunları nasıl yapabileceğiniz açıklanmaktadır.

Ayrıca, yöntemlerinizi arka arkaya sıralayabilir ve buradaki gibi, Toast nesnesini kalıcı olarak oluşturmaktan kaçınabilirsiniz:

Kotlin

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

Java

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

Toast nesnenizin yerini belirleme

Ekranın alt kısmında, yatay olarak ortalanmış standart bir kısa mesaj bildirimi görünür. Bu konumu setGravity(int, int, int) yöntemini kullanarak değiştirebilirsiniz. Bu yöntem üç parametreyi kabul eder: Bir Gravity sabiti, bir x konumu ofseti ve bir y konumu ofseti.

Örneğin, durum mesajının sol üst köşede görünmesi gerektiğine karar verirseniz yerçekimi (gravity) değerini şu şekilde ayarlayabilirsiniz:

Kotlin

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

Java

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

Konumu sağa kaydırmak isterseniz ikinci parametrenin değerini artırın. Aşağı kaydırmak için son parametrenin değerini arttırın.

Özel Durum Mesajı Görünümü Oluşturma

Basit bir kısa mesaj yeterli değilse durum mesajı bildiriminiz için özelleştirilmiş bir düzen oluşturabilirsiniz. Özel düzen oluşturmak için XML'de veya uygulama kodunuzda bir View düzeni tanımlayın ve kök View nesnesini setView(View) yöntemine geçirin.

Aşağıdaki snippet, bir durum mesajı bildirimi için özelleştirilmiş bir düzen içerir (layout/custom_toast.xml olarak kaydedilir):

    <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 öğesi kimliğinin "custom_toast_container" olduğuna dikkat edin. Düzeni büyütmek için bu kimliği ve "custom_toast" XML düzen dosyasının kimliğini burada gösterildiği gibi kullanmanız gerekir:

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()
    }
    

Java

    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();
    

İlk olarak LayoutInflater öğesini getLayoutInflater() (veya getSystemService()) yöntemiyle alın ve ardından, XML'deki düzeni inflate(int, ViewGroup) yöntemini kullanarak büyütün. İlk parametre, düzen kaynağı kimliği ve ikinci parametre, kök View nesnesidir. Bu büyütülmüş düzeni, düzende daha fazla View nesnesi bulmak için kullanabilirsiniz. Dolayısıyla, şimdi ImageView ve TextView öğelerini yakalayın ve içeriklerini tanımlayın. Son olarak, Toast(Context) ile yeni bir Toast nesnesi oluşturun ve kısa iletinin yerçekimi ve süre gibi bazı özelliklerini ayarlayın. Ardından, setView(View) yöntemini çağırın ve bunu büyütülen düzene geçirin. Artık durum mesajını, show() yöntemini çağırarak özel düzeninizle görüntüleyebilirsiniz.

Not: Düzeni setView(View) ile tanımlamayacaksanız genel oluşturucuyu bir Toast nesnesi için kullanmayın. Kullanabileceğiniz özel bir düzeniniz yoksa Toast nesnesini oluşturmak için makeText(Context, int, int) yöntemini kullanmanız gerekir.