Android 4.1(Jelly Bean) から新しく 3 つのスタイルが使用できるようになりました。
- BigTextStyle
- BigPictureStyle
- InboxStyle
また、通知領域に簡単にボタンを追加できるようにもなっています。
以下、それぞれの画面キャプチャとソースコードです。
画面キャプチャと、ソースコード中の文字列を比較しながら見ると、わかりやすいと思います^^
Notification.BigTextStyle
BigTextStyle は「テキスト(Summary Text)」と「小さいアイコン」を表示できます。
- 画面キャプチャ

- ソースコード
// NotificationManager
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Small and large icon
int smallIconId = R.drawable.ic_action_search;
Bitmap largeIconBitmap = BitmapFactory.decodeResource(
getResources(), R.drawable.ic_launcher);
//-----------------------------------------------------------------------
// BigTextStyle
//-----------------------------------------------------------------------
Notification notificationBigTextStyle = new Notification.BigTextStyle(
new Notification.Builder(this)
.setContentTitle("ContentTitle")
.setSmallIcon(smallIconId)
.setLargeIcon(largeIconBitmap))
.bigText("BigText")
// .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle() を上書き
.setSummaryText("SummaryText")
.build();
nm.notify(0, notificationBigTextStyle);
Notification.BigPictureStyle
BigPictureStyle は「大きな画像(Big Picture)」を表示できます。
- 画面キャプチャ

- ソースコード
//-----------------------------------------------------------------------
// BigPictureStyle
//-----------------------------------------------------------------------
Notification notificationBigPictureStyle = new Notification.BigPictureStyle(
new Notification.Builder(this)
.setContentTitle("ContentTitle")
.setSmallIcon(smallIconId)
.setLargeIcon(largeIconBitmap))
// .bigLargeIcon(largeIconBitmap) // Notification.Builder#setLargeIcon() を上書き
.bigPicture(largeIconBitmap)
// .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle() を上書き
.setSummaryText("SummaryText")
.build();
nm.notify(1, notificationBigPictureStyle);
Notification.InboxStyle
InboxStyle は、複数行の「テキスト(Line)」、「テキスト(Summary Text)」と「小さいアイコン」を表示できます。
※8 行目以降は、"..."表示されます
- 画面キャプチャ

- ソースコード
//-----------------------------------------------------------------------
// InboxStyle
//-----------------------------------------------------------------------
Notification notificationInboxStyle = new Notification.InboxStyle(
new Notification.Builder(this)
.setContentTitle("ContentTitle")
.setSmallIcon(smallIconId)
.setLargeIcon(largeIconBitmap))
.addLine("addLine(1)")
.addLine("addLine(2)")
.addLine("addLine(3)")
.addLine("addLine(4)")
.addLine("addLine(5)")
.addLine("addLine(6)")
.addLine("addLine(7)")
.addLine("addLine(8)") // 8行目以降は"..."で表示される
// .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle() を上書き
.setSummaryText("SummaryText")
.build();
nm.notify(2, notificationInboxStyle);
ボタンを追加する
Notification 作成時、Notification.Builder#addAction() を呼び出すと、ボタンを追加することができます。
※最大3つまで追加できます
※ボタン押下時のアクションは、PendingIntent で指定します
- 画面キャプチャ

- ソースコード
// PendingIntent
PendingIntent pendingIntent = PendingIntent.getActivity(this,
0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
//-----------------------------------------------------------------------
// BigTextStyle + Button
//-----------------------------------------------------------------------
Notification notificationBigTextStyle = new Notification.BigTextStyle(
new Notification.Builder(this)
.setContentTitle("ContentTitle")
.setSmallIcon(smallIconId)
.setLargeIcon(largeIconBitmap)
.addAction(android.R.drawable.ic_input_add, "Add", pendingIntent)
.addAction(android.R.drawable.ic_input_delete, "Delete", pendingIntent))
.bigText("BigText")
// .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle() を上書き
.setSummaryText("SummaryText")
.build();
nm.notify(4, notificationBigTextStyle);
