Android многострочные уведомления / уведомления с более длинным текстом - PullRequest
21 голосов
/ 15 июня 2011

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

Кстати, вот 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

Ответы [ 6 ]

48 голосов
/ 09 апреля 2014

Для 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);
38 голосов
/ 12 января 2016
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

5 голосов
/ 15 июня 2011

Вид уведомлений был ограничен 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>
2 голосов
/ 09 сентября 2015

Вот что у меня сработало на 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));
1 голос
/ 12 февраля 2014

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

1 голос
/ 15 июня 2011

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

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

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

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

Для получения дополнительной информации о том, что вы можете делать с уведомлениями, см .:

Уведомление и Построитель уведомлений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...