web-dev-qa-db-fra.com

Android notifications multilignes / notifications avec texte plus long

Je dois créer une notification avec un texte plus long, est-ce possible? Par défaut, ce n'est pas le cas, mais vous pouvez utiliser un mise en page personnalisée , ce que j'ai fait. Maintenant, je peux afficher plusieurs lignes, mais comme vous pouvez le voir, le texte est toujours cassé/ne s'affiche pas complètement? ): Quelqu'un peut-il me dire ce que je fais mal/s'il y a une limite fixe pour la taille des notifications? Si vous regardez la capture d'écran, vous remarquerez qu'il reste encore beaucoup d'espace ... Merci pour tout indice!

BTW voici le XML utilisé pour la mise en page personnalisée, basé sur http://developer.Android.com/guide/topics/ui/notifiers/notifications.html#CustomNotification

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
          Android:orientation="horizontal"
          Android:layout_width="fill_parent"
          Android:layout_height="fill_parent"
          Android:padding="3dp"
          >
<ImageView Android:id="@+id/image"
          Android:layout_width="wrap_content"
          Android:layout_height="fill_parent"
          Android:layout_marginRight="10dp"
          />
<TextView Android:id="@+id/text"
          Android:layout_width="wrap_content"
          Android:layout_height="fill_parent"
          Android:textColor="#000"
          />
</LinearLayout>

Longer notification text

22
stefan.at.wpf

Pour Jelly bean et supérieur, vous pouvez utiliser une notification extensible. Le moyen le plus simple consiste à utiliser NotificationCompat.BigTextStyle pour votre notification.

Ainsi:

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
bigTextStyle.setBigContentTitle(getString(R.string.title));
bigTextStyle.bigText(getString(R.string.long_explanation));

mBuilder.setStyle(bigTextStyle);
49
Ciske Boekelo
NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_notification)
                    .setContentTitle(title)
                    .setStyle(new NotificationCompat.BigTextStyle()
                                      .bigText(message))
                    .setContentText(message)                                            
                    .setDefaults(NotificationCompat.DEFAULT_SOUND)
                    .setContentIntent(contentIntent)
                    .setAutoCancel(true);

mNotificationManager.notify(requestID, mBuilder.build());

une fois reffer https://developer.Android.com/guide/topics/ui/notifiers/notifications.html

46
sreeniwasa

La vue des notifications était limitée par 65sp En hauteur. C'était un détail d'implémentation et n'est pas documenté et a été modifié dans Android 4.1 pour prendre en charge les notifications extensibles . Ne vous fiez donc pas à cette valeur spécifique, mais plutôt à la fait que la vue a une hauteur limitée.

Voici status_bar_latest_event.xml utilisé pour gonfler les vues dans la zone de notification:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="65sp"
    Android:orientation="vertical"
    >

    <com.Android.server.status.LatestItemView Android:id="@+id/content"
            Android:layout_width="match_parent"
            Android:layout_height="64sp"
            Android:background="@drawable/status_bar_item_background"
            Android:focusable="true"
            Android:clickable="true"
            Android:paddingRight="6sp"
            >
    </com.Android.server.status.LatestItemView>

    <View
        Android:layout_width="match_parent"
        Android:layout_height="1sp"
        Android:background="@drawable/divider_horizontal_bright"
        />

</LinearLayout>
5
inazaruk

Ma compréhension est que le système de notification d'Android a une hauteur limitée par notification afin d'éviter qu'une seule notification ne remplisse l'écran.

À partir de la page que vous avez liée:

Attention: lorsque vous utilisez une disposition de notification personnalisée, veillez particulièrement à ce que votre disposition personnalisée fonctionne avec différentes orientations et résolutions de périphérique. Bien que ce conseil s'applique à toutes les dispositions d'affichage, il est particulièrement important pour les notifications car l'espace dans le tiroir de notification est très restreint . Ne rendez pas votre mise en page personnalisée trop complexe et assurez-vous de la tester dans différentes configurations.

Vous pouvez cependant afficher plusieurs notifications, des notifications "collantes" ou peut-être faire défiler le texte à l'intérieur de la notification.

Pour plus d'informations sur ce que vous pouvez faire avec les notifications, voir:

Notification et Générateur de notifications

1
Andre

C'est ce qui a fonctionné pour moi sur 5.0. Il enveloppe bien les longues lignes. Et il vous permet également de fournir un tableau de chaînes qui seront affichées séparément avec une nouvelle ligne.

        String[] multilineDescription = new String[] { "line 1", "another very long line that will get wrapped." };

        NotificationCompat.Builder builder = new NotificationCompat.Builder(appContext)
                .setSmallIcon(smallIcon)
                .setContentTitle(title)
                .setContentText("Pull down for more information");

        String description;
        if (null == multilineDescription || multilineDescription.length == 0) {
            description = "No more information.";
        } else {
            description = multilineDescription[0];

            for (int i=1; i<multilineDescription.length; i++) {
                description += System.getProperty("line.separator");
                description += multilineDescription[i];
            }
        }

        builder.setStyle(new NotificationCompat.BigTextStyle().bigText(description));
1
HANiS

Android fournit une large vue des notifications extensibles, il prend en charge 3 styles, le style bigpicture, le style boîte de réception, le style gros texte (256 dp), mais uniquement à partir de Android versions supérieures à Jelly bean. Pour les versions inférieures, nous ne le faisons pas avoir une grosse notification de style de texte.

1
g4gaj