Kaustubh Bhagwat
Kaustubh Bhagwat

Reputation: 2833

Android Custom Push Notification showing blank text and title

I am trying to set a custom notification layout

 RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
        contentView.setImageViewResource(R.id.image_customNote,R.mipmap.ic_notification);
        contentView.setTextViewText(R.id.title_customNote,title);
        contentView.setTextViewText(R.id.text_customNote, messageBody);


        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setPriority(Notification.PRIORITY_HIGH)
                .setAutoCancel(true)
                //.setContentText(title)
               // .setContentText(messageBody)
                .setTicker(title)
                .setSound(defaultSoundUri)
              /*  .setStyle(new NotificationCompat.BigTextStyle().bigText(title))
                .setStyle(new NotificationCompat.BigTextStyle().bigText(messageBody))*/
                .setCustomContentView(contentView)
                .setCustomBigContentView(contentView)
                .setContentIntent(pendingIntent)
                .setSmallIcon(getNotificationIcon()).setColor(ContextCompat.getColor(this, R.color.colorPrimary));
             //   .addAction(R.drawable.ic_launcher, "Previous", pendingIntent)
             //   .setColor(ContextCompat.getColor(this, R.color.colorPrimary));

        notificationManager.notify(new Random().nextInt(), notificationBuilder.build());

this is the code i am trying ,

Here is my xml file

   <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/image_customNote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="10dp" />

    <TextView
        android:id="@+id/title_customNote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:layout_toRightOf="@id/image_customNote"

        />

    <TextView
        android:id="@+id/text_customNote"
        android:textColor="@android:color/black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title_customNote"
        android:layout_toRightOf="@id/image_customNote" />
</RelativeLayout>

When i recieve a notification the custom view does not get set and the notification view is completely blank ... please help

Upvotes: 3

Views: 2739

Answers (2)

Dus
Dus

Reputation: 4230

The problem is in your xml.

  1. You don't have an id of 'title'. you need to set your 2nd textView to android:layout_below="@id/title_customNote"
  2. Remove the style - and set text color to your textviews - the text is set, but the color is transparent.

This xml worked for me :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/image_customNote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="10dp" />

    <TextView
        android:id="@+id/title_customNote"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/holo_blue_dark"
        android:layout_toRightOf="@id/image_customNote" />

    <TextView
        android:id="@+id/text_customNote"
        android:textColor="@android:color/holo_blue_dark"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title_customNote"
        android:layout_toRightOf="@id/image_customNote" />
</RelativeLayout>

enter image description here

Upvotes: 1

Febi M Felix
Febi M Felix

Reputation: 2839

This is your edited code snippet i have tried and notification appears.

        int icon = R.drawable.icon;
        NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
        contentView.setImageViewResource(R.id.image_customNote, R.mipmap.app_icon);
        contentView.setTextViewText(R.id.title_customNote, "Title");
        contentView.setTextViewText(R.id.text_customNote, "Custom");

        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setPriority(Notification.PRIORITY_HIGH)
                //.setContentTitle(title)
                //.setStyle(new NotificationCompat.BigTextStyle().bigText(title))
                //.setContentText(messageBody).setStyle(new NotificationCompat.BigTextStyle().bigText(messageBody))
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(contentIntent)
                .setContent(contentView)
                .setColor(ContextCompat.getColor(this, R.color.colorPrimary))
                //.setContentTitle(title).setContentText(messageBody)
                .setSmallIcon(icon);

        mNotificationManager.notify(new Random().nextInt(), notificationBuilder.build());

Also corrected your layout as below(2nd Textview)

<TextView android:id="@+id/text_customNote"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_toRightOf="@id/image_customNote"
              android:layout_below="@id/title_customNote"
              style="Custom Notification Text" />

Upvotes: 0

Related Questions