问题
I want to show my custom notification by support both small and large layout as screenshots above when user collapse or expand the notification. But the result it shows expanded notification by default. I want to show it as collapsed notification by default and only show expanded notification when user expand it.
Please check my code bellow:
private fun initCustomNotification() {
// Get the layouts to use in the custom notification
val notificationLayout = RemoteViews(packageName, R.layout.custom_notification_small_layout)
val notificationLayoutExpanded = RemoteViews(packageName, R.layout.custom_notification_large_layout)
// Apply the layouts to the notification
customNotificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.dog)
.setStyle(NotificationCompat.DecoratedCustomViewStyle())
.setCustomContentView(notificationLayout)
.setCustomBigContentView(notificationLayoutExpanded)
.setOngoing(true)
.setShowWhen(false)
}
Thanks.
回答1:
It might be late but it may be helpful for others. You can set collapsed notification by default with NotificationManager.IMPORTANCE_MIN
and you can set expanded notification by default with NotificationManager.IMPORTANCE_HIGH.
You can have full example:
public void generateCollepedNotification(Context context, String notificationTitle, String notificationSubText, String notificationMessage) {
String channelId = "my_channel_id";
int notification_id = 1001;
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.mipmap.ic_logo_notification)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_logo)) // optional
.setContentTitle(notificationTitle)
.setContentText(notificationMessage)
.setSubText(notificationSubText) // optional
.setColor(ContextCompat.getColor(context, R.color.colorPrimary)) // optional
.setAutoCancel(true);
getNotificationManagerIMPORTANCE_MIN(context, channelId).notify(notification_id, builder.build());
}
private NotificationManager getNotificationManagerIMPORTANCE_MIN(Context context, String channelId) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
String channelName = "My Channel Name";
String channelDescription = "This is Description of my channel";
NotificationChannel mChannel = new NotificationChannel(
channelId,
channelName,
NotificationManager.IMPORTANCE_MIN
);
mChannel.setDescription(channelDescription);
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
mChannel.setShowBadge(false);
notificationManager.createNotificationChannel(mChannel);
}
return notificationManager;
}
来源:https://stackoverflow.com/questions/52637993/how-to-show-custom-notification-by-default-with-collapsed-layout-when-expand-lay