我需要在android中创建自定义通知而不是默认通知。 当前通知有一个图标,标题和消息,如下面的图像
我希望它像这样自定义
我怎样才能实现这个目标
答案 0 :(得分:7)
通知视图
普通视图 - 普通视图中的通知显示在最高64 dp的区域中。即使您使用大视图样式创建通知,它也会在普通视图中显示,直到它被展开。
Content title
Large icon
Content text
Content info
Small icon
Notification time
普通视图赞
大视图 - 只有在通知展开时才会显示通知的大视图,当通知位于通知抽屉的顶部时,或者当用户使用手势展开通知时,就会出现通知。扩展通知最初是在Android 4.1 JellyBean [API 16]
中引入的。 Expandable notifications
旨在支持名为Notification.Style
的丰富通知样式对象。
大视图
转到此链接expandable-notifications-android
有关官方docs
的更多信息答案 1 :(得分:4)
我已通过以下http://developer.android.com/wear/notifications/creating.html
创建了通知添加创建通知的代码。
// Specify the 'big view' content to display the long
// event description that may not fit the normal content text.
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
bigStyle.bigText(eventDescription);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_event)
.setLargeIcon(BitmapFractory.decodeResource(
getResources(), R.drawable.notif_background))
.setContentTitle(eventTitle)
.setContentText(eventLocation)
.setContentIntent(viewPendingIntent)
.addAction(R.drawable.ic_map,
getString(R.string.map), mapPendingIntent)
.setStyle(bigStyle);
答案 2 :(得分:3)
这个名为Expanded layouts的名字来自Jelly Bean版本。
有两种通知视图:
通知的大视图仅在通知展开时显示,当通知位于通知抽屉的顶部时,或者当用户使用手势展开通知时,会发生通知。扩展通知最初是在Android 4.1 JellyBean [API 16]中引入的。
在您的情况下,您只想在通知中显示大图,尝试Notification.BigPictureStyle:
Bitmap remote_picture = null;
// Create the style object with BigPictureStyle subclass.
NotificationCompat.BigPictureStyle notiStyle = new
NotificationCompat.BigPictureStyle();
notiStyle.setBigContentTitle("Big Picture Expanded");
notiStyle.setSummaryText("Nice big picture.");
try {
remote_picture = BitmapFactory.decodeStream(
(InputStream) new URL(sample_url).getContent());
} catch (IOException e) {
e.printStackTrace();
}
// Add the big picture to the style.
notiStyle.bigPicture(remote_picture);
答案 3 :(得分:0)
您可以使用需要remoteview的NotificationCompat。下面我设置了名为
的自定义布局
activity_downlaodactivity
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
RemoteViews contentView = new RemoteViews(getPackageName(),R.layout.activity_downlaodactivity);
android.support.v4.app.NotificationCompat.Builder mBuilder =
new android.support.v4.app.NotificationCompat.Builder(this)
.setContent(contentView)
manager.notify(0, mBuilder.build());