Pop-up mesajı oluşturma ve görüntüleme

Oluşturma yöntemini deneyin
Android için önerilen kullanıcı arayüzü araç seti Jetpack Compose'dur. Oluştur'a nasıl bildirim ekleyeceğinizi öğrenin.

Kullanıcıya kısa bir mesaj göstermek için Snackbar kullanabilirsiniz. Bildirimler'in aksine, mesaj kısa bir süre sonra otomatik olarak kaybolur. Snackbar, kullanıcının işlem yapması gerekmeyen kısa mesajlar için idealdir. Örneğin, bir e-posta uygulaması, kullanıcıya e-postayı başarıyla gönderdiğini bildirmek için Snackbar kullanabilir.

CoordinatorLayout kullanma

Bir görünüme Snackbar eklenir. Snackbar, View sınıfından türetilen herhangi bir nesneye (ör. ortak düzen nesnelerinden herhangi biri) eklenirse temel işlevler sağlar. Ancak Snackbar bir CoordinatorLayout'e bağlıysa Snackbar ek özellikler kazanır:

  • Kullanıcı, Snackbar'ü kaydırarak kapatabilir.
  • Snackbar göründüğünde düzen diğer kullanıcı arayüzü öğelerini hareket ettirir. Örneğin, düzende bir FloatingActionButton varsa düzen, Snackbar gösterdiğinde Snackbar'yi düğmenin üzerine çizmek yerine düğmeyi yukarı taşır. Bu durumun nasıl göründüğünü 1.

CoordinatorLayout sınıfı, FrameLayout sınıfının işlevlerinin bir üst kümesini sağlar. Uygulamanızda zaten bir FrameLayout kullanılıyorsa Snackbar işlevinin tümünü etkinleştirmek için bu düzeni CoordinatorLayout ile değiştirebilirsiniz. Uygulamanız başka düzen nesneleri kullanıyorsa mevcut düzen öğelerinizi aşağıdaki örnekte gösterildiği gibi bir CoordinatorLayout içine yerleştirin:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/myCoordinatorLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Here are the existing layout elements, now wrapped in
         a CoordinatorLayout. -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- ...Toolbar, other layouts, other elements... -->

    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

CoordinatorLayout için bir android:id etiketi ayarlayın. Mesajı görüntülerken düzenin kimliğine ihtiyacınız vardır.

Şekil 1. Snackbar göründüğünde CoordinatorLayout, FloatingActionButton'ü yukarı taşır.

Mesaj görüntüleme

Mesaj görüntülemenin iki adımı vardır. Öncelikle, mesaj metnini içeren bir Snackbar nesnesi oluşturursunuz. Ardından, mesajı kullanıcıya göstermek için söz konusu nesnenin show() yöntemini çağırırsınız.

Snackbar nesnesi oluşturma

Statik Snackbar.make() yöntemini çağırarak bir Snackbar nesnesi oluşturun. Snackbar öğesini oluştururken görüntüleyeceği mesajı ve mesajın gösterilme süresini belirtin:

Kotlin

val mySnackbar = Snackbar.make(view, stringId, duration)

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
görüntüleme
Snackbar öğesinin ekleneceği görünüm. Yöntem, bir CoordinatorLayout veya pencere dekorunun içerik görünümüne ulaşana kadar iletilen görünümden görünüm hiyerarşisini yukarı doğru arar. Normalde, içeriğinizi kapsayan CoordinatorLayout öğesini iletmek daha kolaydır.
stringId
Görüntülemek istediğiniz mesajın kaynak kimliği. Bu, biçimlendirilmiş veya biçimlendirilmemiş metin olabilir.
süre
Mesajın gösterileceği süre. Bu, LENGTH_SHORT veya LENGTH_LONG olabilir.

Mesajı kullanıcıya gösterme

Snackbar öğesini oluşturduktan sonra, Snackbar öğesini kullanıcıya göstermek için show() yöntemini çağırın:

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

Sistem aynı anda birden fazla Snackbar nesnesi göstermez. Bu nedenle, görünümde şu anda başka bir Snackbar gösteriliyorsa sistem, Snackbar'nizi sıraya alır ve mevcut Snackbar'nin süresi dolduktan veya reddedildikten sonra gösterir.

Kullanıcıya bir mesaj göstermek istiyorsanız ve Snackbar nesnesinin yardımcı yöntemlerinden hiçbirini çağırmanız gerekmiyorsa show()'ü çağırdıktan sonra Snackbar referansını tutmanız gerekmez. Bu nedenle, tek bir ifadede Snackbar oluşturmak ve göstermek için yöntem zincirleme kullanmak yaygındır:

Kotlin

Snackbar.make(
        findViewById(R.id.myCoordinatorLayout),
        R.string.email_sent,
        Snackbar.LENGTH_SHORT
).show()

Java

Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent,
                        Snackbar.LENGTH_SHORT)
        .show();