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. Bildirimlerden farklı olarak, 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ı, uygulamada e-posta gönderme işleminin başarılı olduğunu kullanıcıya bildirmek için Snackbar simgesini 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 nesneleri) 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. Bu durumun nasıl göründüğünü Şekil 1'de görebilirsiniz.

CoordinatorLayout sınıfı, FrameLayout sınıfının işlevlerinin üst kümesini sağlar. Uygulamanızda zaten FrameLayout kullanılıyorsa Snackbar işlevlerinin 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:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myCoordinatorLayout"
    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>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

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

Şekil 1. CoordinatorLayout, Snackbar göründüğünde FloatingActionButton simgesini 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 yöntemini çağırarak Snackbar.make() nesnesi oluşturun. Snackbar oluşturduğunuzda, gösterilecek mesajı ve mesajın gösterileceği süreyi belirtin:

val 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 geçirmek 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, show() yöntemini çağırarak Snackbar öğesini kullanıcıya gösterin:

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 nesnesinin süresi dolduktan veya kapatıldıktan sonra 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:

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