Android自定义推送通知显示空白文本和标题

时间:2016-10-26 11:19:05

标签: android notifications

我正在尝试设置自定义通知布局

 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());

这是我正在尝试的代码,

这是我的xml文件

   <?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>

当我收到通知时,自定义视图未设置且通知视图完全空白...请帮助

2 个答案:

答案 0 :(得分:1)

问题在于你的xml。

  1. 您没有'标题'的ID。你需要将你的第二个textView设置为android:layout_below =“@ id / title_customNote”
  2. 删除样式 - 并为文字视图设置文字颜色 - 文字已设置,但颜色是透明的。
  3. 这个xml对我有用:

    <?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

答案 1 :(得分:0)

这是我编辑过的已编辑的代码段,会显示通知。

        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());

还更正了您的布局,如下所示(第二次文本视图)

<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" />