2016-07-03 12 views
0

3つ以上のアクションで通知を表示しようとしています。残念ながら、第4のアクションなどは表示されません(おそらく十分なスペースがないため)。また、アクションアイテムの幅が同じではありません。多くのアクションのある通知は表示されません

enter image description here

誰もが、私は3つの以上のアクションを表示することができます方法を知っていますか?

これは私のコードです:

final NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); 
    inboxStyle.setBigContentTitle(message.getData().get(DATA_TITLE)); 
    inboxStyle.addLine(message.getData().get(DATA_BODY)); 

    final NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.ic_notification) 
      .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)) 
      .setContentTitle(message.getData().get(DATA_TITLE)) 
      .setContentText(message.getData().get(DATA_BODY)) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setStyle(inboxStyle) 
      .setContentIntent(defaultIntent) 
      .setPriority(Notification.PRIORITY_MAX); 

    addActions(notificationBuilder, message); 

    private void addActions(final NotificationCompat.Builder builder, final RemoteMessage message) { 
    if (containsAction(message, EventActionType.OpenMessage)) { 
     builder.addAction(R.drawable.ic_email, "open", getActionIntent(message, MyActivity.class)); 
    } 
    if (containsAction(message, EventActionType.Details)) { 
     builder.addAction(R.drawable.ic_notification_account, "details", getActionIntent(message, MyActivity.class)); 
    } 
    if (containsAction(message, EventActionType.Transfer)) { 
     builder.addAction(R.drawable.ic_access_time, "transfer", getActionIntent(message, MyActivity.class)); 
    } 
+2

私は2つ以上のアクションを持つと、混乱し混乱させてしまうと思います。あなたは1つの主要な行動をした後、他のことをするための活動を開く「より多くの」ボタンや何かを持つ方がよい。 –

+0

Matti氏の言うとおり、通知は複雑なCRUDアクションを通知するのではなく、通知するためのものです。あなたはデザインによって非常に小さなスペースを持っていますが、アンドロイド5+ iircにはより多くのタイプの標準通知があります。これらのタイプの問題については、システムと戦い、標準のメッセージを使用しない方がよい場合がよくあります。がんばろう! –

+0

ご意見ありがとうございますが、私は主なものよりも多くの行動を取らなければなりません。これはビジネス上の必要条件です。誰もこれを達成するために表示する方法を知っていますか? – mspapant

答えて

3

このlinkはあなたを助けることができます。 アンドロイドの標準文書によると、通知には3つ以上の操作を行うことはできません。
4つ以上のアクションが必要な場合は、remoteViewsを使用できます。すべての通知には、アンドロイドOSによって提供されるデフォルトのビューがありますが、カスタマイズすることができます。これを行うには、レイアウトを作成して通知ビューとして使用し、そのレイアウトで必要なだけ多くのボタンを使用しますが、レイアウトの高さは、通知の高さがAndroidによって制限されるため制限されます。通知にフィットします。このレイアウトでremoteViewsを作成します。

その後、通知を作成するときに、setCustomContentViewを使用して通知に通知を添付します。ビュー内の各ボタンについて、異なるペンディングインテントを実行できる異なるボタンをクリックすると、異なるペンディングが可能になります。 RemoteView.setOnClickPendingIntent(view、pendingIntent)を参照してください。
ハッピーコーディング;-)

+0

@GhostCat私は自分の答えを編集しました、thnx。 –

関連する問題