如何在android中的通知内容文本中显示图标和文本

时间:2016-11-22 09:04:57

标签: android android-notifications android-notification-bar

我需要在我的Android应用程序中显示通知。

我使用以下代码:

NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(baseContext).setLargeIcon(large_icon)
                .setSmallIcon(R.drawable.message_received_small_icon)
                .setContentIntent(pendingIntent)
                .setAutoCancel(true)
                .setSound(soundUri);
                .setContentTitle("New Message");
                .setContentText("video");

此通知显示左侧的“已接收消息”图标。在收到的消息图标右侧,显示" DHan Nexus"作为标题,在它下面,它显示"照片"。

但不是只显示"照片"字符串,我想显示相机图标+"照片"字符串。 我还没有找到任何方法在setContentText()API中显示相机图标。 请帮助如何实现这一目标。我是否需要制作自定义布局或任何默认方法都可以。

这是使问题更清晰的图像:

enter image description here

我尝试使用spannableString来显示图标和文本。但它看起来没有用。

CharSequence cs = getContentIcon(text);
.setContentText(cs.toString());
    private CharSequence getContentIcon(String text)
    {
        Drawable image = ContextCompat.getDrawable(baseContext, R.drawable.camera_icon);

        image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
        // Replace blank spaces with image icon
        SpannableString sb = new SpannableString("                      "+text);
        ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BASELINE);
        sb.setSpan(imageSpan, 0, 20, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        return sb;
    }

1 个答案:

答案 0 :(得分:1)

您可以将RemoteViews与自定义布局结合使用。

请注意,Android 7 Nougat在通知中有一些变化(我尚未潜入其中)。下面的代码是针对下面的Nougat。

// for standard notification
RemoteViews views = new RemoteViews(getPackageName(), R.layout.notification_simple);

// for expanded notification
// RemoteViews bigViews = new RemoteViews(getPackageName(), R.layout.notification_expanded);

views.setImageViewBitmap(R.id.picture, YOUR_IMAGE_BITMAP_HERE);
views.setTextViewText(R.id.text, YOUR_TEXT_HERE);

NotificationCompat.Builder notificationBuilder = 
        new NotificationCompat.Builder(this)
                .setSmallIcon(YOUR_NOTIFICATION_ICON)
                .setCustomContentView(views);
                // .setCustomBigContentView(bigViews); // if you've set it

notification = notificationBuilder.build();