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

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da nasıl bildirim ekleyeceğinizi öğrenin.

Kullanıcıya kısa bir mesaj göstermek için Snackbar kullanabilirsiniz. Bildirimlerin 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-postanın başarıyla gönderildiğini bildirmek için Snackbar kullanabilir.

CoordinatorLayout kullanma

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

  • Kullanıcı, Snackbar simgesini kaydırarak kapatabilir.
  • Snackbar simgesi göründüğünde düzende diğer kullanıcı arayüzü öğeleri hareket eder. Örneğin, düzende bir FloatingActionButton varsa düzen, Snackbar öğesini düğmenin üzerine çizmek yerine Snackbar gösterdiğinde düğmeyi yukarı taşır. Bunun nasıl göründüğünü 1. şekilde görebilirsiniz.

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

<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österirken düzenin kimliğine ihtiyacınız vardır.

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

Mesaj görüntüleme

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

Snackbar nesnesi oluşturma

Statik Snackbar.make() yöntemini çağırarak Snackbar nesnesi oluşturun. Snackbar oluşturduğunuzda, gösterilecek mesajı ve mesajın gösterileceği süreyi belirtin:

Kotlin

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

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
göster
Snackbar öğesinin ekleneceği görünüm. Bu yöntem, iletilen görünümden başlayarak görünüm hiyerarşisinde CoordinatorLayout veya pencere dekorunun içerik görünümüne ulaşana kadar arama yapar. 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 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 nesnenizi sıraya alır ve geçerli Snackbar nesnesi sona erdiğinde veya kapatıldığında gösterir.

Kullanıcıya bir mesaj göstermek istiyorsanız ve Snackbar nesnesinin yardımcı yöntemlerinden herhangi birini çağırmanız gerekmiyorsa show() yöntemini çağırdıktan sonra Snackbar nesnesine yapılan referansı saklamanız gerekmez. Bu nedenle, tek bir ifadede Snackbar oluşturup 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();