Bildirimlerinizin Android'in farklı sürümlerinde en iyi şekilde görünmesini sağlamak için bildirimlerinizi oluştururken standart bildirim şablonunu kullanın. Bildiriminizde daha fazla içerik sunmak istiyorsanız genişletilebilir bildirim şablonlarından birini kullanabilirsiniz.
Ancak sistem şablonları ihtiyaçlarınızı karşılamıyorsa bildirim için kendi düzeninizi kullanabilirsiniz.
İçerik alanı için özel düzen oluşturma
Özel bir düzene ihtiyacınız varsa bildiriminize NotificationCompat.DecoratedCustomViewStyle uygulayabilirsiniz. Bu API, normalde başlık ve metin içeriğinin kapladığı içerik alanı için özel bir düzen sunmanıza olanak tanır. Bu sırada bildirim simgesi, zaman damgası, alt metin ve işlem düğmeleri için sistem dekorasyonlarını kullanmaya devam edebilirsiniz.
Bu API, temel bildirim düzenini aşağıdaki şekilde oluşturarak genişletilebilir bildirim şablonlarına benzer şekilde çalışır:
NotificationCompat.Builderile temel bir bildirim oluşturun.setStyle()işleviniNotificationCompat.DecoratedCustomViewStyleörneğiyle çağırın.- Özel düzeninizi
RemoteViewsörneği olarak genişletin. - Daraltılmış bildirimin düzenini ayarlamak için
setCustomContentView()yöntemini çağırın. - İsteğe bağlı olarak, genişletilmiş bildirim için farklı bir düzen ayarlamak üzere
setCustomBigContentView()yöntemini de çağırabilirsiniz.
Düzenleri hazırlama
small ve large düzeni gerekir. Bu örnekte small düzeni şu şekilde görünebilir:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/notification_title" style="@style/TextAppearance.Compat.Notification.Title" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="Small notification, showing only a title" /> </LinearLayout>
large düzeni şu şekilde görünebilir:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="300dp" android:orientation="vertical"> <TextView android:id="@+id/notification_title" style="@style/TextAppearance.Compat.Notification.Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="Large notification, showing a title and a body." /> <TextView android:id="@+id/notification_body" style="@style/TextAppearance.Compat.Notification.Line2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="This is the body. The height is manually forced to 300dp." /> </LinearLayout>
Bildirimi oluşturma ve gösterme
Düzenler hazır olduktan sonra bunları aşağıdaki örnekte gösterildiği gibi kullanabilirsiniz:
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager // Get the layouts to use in the custom notification. val notificationLayout = RemoteViews(packageName, R.layout.notification_small) val notificationLayoutExpanded = RemoteViews(packageName, R.layout.notification_large) // Apply the layouts to the notification. val customNotification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.notification_icon) .setStyle(NotificationCompat.DecoratedCustomViewStyle()) .setCustomContentView(notificationLayout) .setCustomBigContentView(notificationLayoutExpanded) .build() notificationManager.notify(666, customNotification)
Bildirimin arka plan renginin cihazlara ve sürümlere göre değişebileceğini unutmayın. Özel düzeninizde metin için TextAppearance_Compat_Notification, başlık için TextAppearance_Compat_Notification_Title gibi Destek Kitaplığı stillerini uygulayın.
Bu işlem, aşağıdaki örnekte gösterildiği gibi yapılır. Bu stiller, renk varyasyonlarına uyum sağlar. Böylece siyah üzerine siyah veya beyaz üzerine beyaz metinler oluşmaz.
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/notification_title"
android:id="@+id/notification_title"
style="@style/TextAppearance.Compat.Notification.Title" />
RemoteViews nesnenize arka plan resmi ayarlamayın. Aksi takdirde metniniz okunamaz hale gelebilir.
Kullanıcı bir uygulamayı kullanırken bildirim tetiklediğinizde sonuç, Şekil 1'deki gibi olur:
Genişletme okuna dokunulduğunda bildirim, Şekil 2'de gösterildiği gibi genişletilir:
Bildirim zaman aşımı süresi dolduktan sonra bildirim yalnızca sistem çubuğunda görünür. Bu çubuk, Şekil 3'teki gibi görünür:
Genişletme okuna dokunulduğunda bildirim, Şekil 4'te gösterildiği gibi genişler:
Tamamen özel bir bildirim düzeni oluşturma
Bildiriminizin standart bildirim simgesi ve başlığıyla süslenmesini istemiyorsanız önceki adımları uygulayın ancak setStyle() yöntemini çağırmayın.