Подтвердить что ты не робот

Многострочные уведомления/уведомления Android с более длинным текстом

Мне нужно создать уведомление с более длинным текстом, возможно ли это? По умолчанию это не так, но вы можете использовать настраиваемый макет, что я и сделал. Теперь я могу отображать несколько строк, но, как вы можете видеть, текст все еще сломан/не отображается полностью? ): Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно/если есть фиксированный лимит на размер уведомлений? Если вы посмотрите на скриншот, вы заметите, что осталось еще много места... Спасибо за любой намек!

Кстати, XML используется для пользовательского макета, основанного на 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

4b9b3361

Ответ 1

Для Jelly Bean и выше вы можете использовать расширяемое уведомление. Самый простой способ - использовать NotificationCompat.BigTextStyle для вашего уведомления.

Так же:

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

mBuilder.setStyle(bigTextStyle);

Ответ 2

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());

после reffer https://developer.android.com/guide/topics/ui/notifiers/notifications.html

Ответ 3

Вид уведомления был ограничен высотой 65sp. Это была деталь реализации и не документирована, и был изменен в Android 4.1 для поддержки расширяемых уведомлений. Поэтому не полагайтесь на это конкретное значение, а скорее полагайтесь на то, что представление имеет ограниченную высоту.

Вот status_bar_latest_event.xml, который использовался для раздувания представлений в области уведомлений:

<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>

Ответ 4

Я понимаю, что система уведомлений Android имеет ограниченную высоту для каждого уведомления, чтобы избежать того, чтобы одно уведомление заполняло экран.

На странице, которую вы указали:

Внимание: при использовании настраиваемого макета уведомлений следует проявлять особую осторожность, чтобы убедиться, что ваш настраиваемый макет работает с различными ориентациями и разрешениями устройств. Хотя этот совет относится ко всем макетам View, это особенно важно для уведомлений, поскольку пространство в ящике уведомлений очень ограничено. Не делайте свой собственный макет слишком сложным и обязательно проверяйте его в различных конфигурациях.

Однако вы можете отображать несколько уведомлений, "липкие" уведомления или, возможно, прокручивать текст внутри уведомления.

Подробнее о том, что вы можете делать с уведомлениями, см. ниже:

Notification и Notification Builder

Ответ 5

Android предоставляет расширенные возможности просмотра, поддерживающие 3 вида, стиль большой пиктограммы, стиль входящих сообщений, стиль большого текста (256 дп), но только от версий Android больше, чем желе bean. для более низких версий у нас нет большого уведомления о стиле текста.

Ответ 6

Это то, что сработало для меня на 5.0 Он красиво обертывает длинные линии. И он также позволяет вам предоставить массив строк, которые будут отображаться разделенными новой строкой.

        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));