how to show full content in notification at frist time in android with using notification style or need to go for custom layout??
Use a custom contentView
on your Notification Builder
To define a custom notification layout, start by instantiating a RemoteViews object that inflates an XML layout file. Then, instead of calling methods such as setContentTitle(), call
setContent()
. To set content details in the custom notification, use the methods inRemoteViews
to set the values of the view's children:Create an XML layout for the notification in a separate file. You can use any file name you wish, but you must use the extension .xml In your app, use
RemoteViews
methods to define your notification's icons and text. Put thisRemoteViews
object into yourNotificationCompat.Builder
by calling setContent(). Avoid setting a background Drawable on your RemoteViews object, because your text color may become unreadable.
custom_push.xml has my custom views R.id.image,R.id.text,R.id.title
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="64dp" android:padding="10dp" > <ImageView android:src="@mipmap/ic_launcher" android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" /> <TextView android:textSize="13dp" android:textColor="#000" android:text="Testing" android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image" /> <TextView android:textSize="13dp" android:textColor="#000" android:text="Testing is awecome" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/image" android:layout_below="@id/title" /> </RelativeLayout>
Instantiating a RemoteViews object and set it,
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_push); contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher); contentView.setTextViewText(R.id.title, "Custom notification"); contentView.setTextViewText(R.id.text, "This is a custom layout"); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.icon) .setContent(contentView); Notification notification = mBuilder.build(); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.defaults |= Notification.DEFAULT_SOUND; notification.defaults |= Notification.DEFAULT_VIBRATE; notificationManager.notify(1, notification);
check : https://developer.android.com/guide/topics/ui/notifiers/notifications.html#ApplyStyle
I used BitTextStyle()
to add highlighted text in notification.
return new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_mono)
.setContentTitle(title)
.setContentText(message)
.setLargeIcon(icon)
.setColor(ContextCompat.getColor(context, R.color.notification_color))
.setStyle(new NotificationCompat.BigTextStyle().bigText(title))
.setStyle(new NotificationCompat.BigTextStyle().bigText(message).setSummaryText("#hashtag"))
.setShowWhen(true)
.setAutoCancel(true);
This code worked for me.
private static RemoteViews contentView;
private static Notification notification;
private static NotificationManager notificationManager;
private static final int NotificationID = 1005;
private static NotificationCompat.Builder mBuilder;
private void RunNotification() {
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(getApplicationContext(), "notify_001");
contentView = new RemoteViews(getPackageName(), R.layout.my_notification_layout);
contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher);
Intent switchIntent = new Intent(this, BackgroundService.switchButtonListener.class);
PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 1020, switchIntent, 0);
contentView.setOnClickPendingIntent(R.id.flashButton, pendingSwitchIntent);
mBuilder.setSmallIcon(R.mipmap.newicon);
mBuilder.setAutoCancel(false);
mBuilder.setOngoing(true);
mBuilder.setPriority(Notification.PRIORITY_HIGH);
mBuilder.setOnlyAlertOnce(true);
mBuilder.build().flags = Notification.FLAG_NO_CLEAR | Notification.PRIORITY_HIGH;
mBuilder.setContent(contentView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "channel_id";
NotificationChannel channel = new NotificationChannel(channelId, "channel name", NotificationManager.IMPORTANCE_HIGH);
channel.enableVibration(true);
channel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
notificationManager.createNotificationChannel(channel);
mBuilder.setChannelId(channelId);
}
notification = mBuilder.build();
notificationManager.notify(NotificationID, notification);
}
this is my notification layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#e9ebe9">
<ImageView
android:id="@+id/flashButton"
android:layout_width="180dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="-20dp"
android:src="@drawable/turnoff2" />
<ImageView
android:layout_width="100dp"
android:layout_height="45dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="-10dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:src="@mipmap/newicon" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="80dp">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Flashlight"
android:textColor="#000000"
android:textSize="13sp" />
<TextView
android:id="@+id/charging"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_alignParentLeft="true"
android:layout_marginTop="3dp"
android:text="90% Charging"
android:textColor="#000000"
android:textSize="13sp" />
</RelativeLayout>
</RelativeLayout>
I hope this could help you
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With