DecoratedCustomViewStyle на большую высоту? - PullRequest
0 голосов
/ 04 июля 2018

Я реализовал пользовательское уведомление с помощью https://developer.android.com/training/notify-user/custom-notification

Я использовал

.setStyle(new NotificationCompat.DecoratedCustomViewStyle())

для установки оригинальных стилей + заголовок уведомления.

Результат следующий:

  • Неправильно При получении уведомления https://prnt.sc/k2fggz , Посмотрите на место под уведомлением
  • Неправильно Получение уведомления при открытой строке состояния http://prntscr.com/k2fj1v
  • Правильно открытие строки состояния после получения уведомления http://prntscr.com/k2fj72

Компоновка:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/notification_small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:id="@+id/relativeLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/notification_image"
        android:layout_toStartOf="@+id/notification_image">

        <LinearLayout
            android:id="@+id/linearNotificationWrap"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/notification_cat_icon"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_gravity="center" />

            <TextView
                android:id="@+id/notification_title"
                style="@style/TextAppearance.Compat.Notification.Title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="title" />
        </LinearLayout>

        <TextView
            android:id="@+id/notification_body"
            style="@style/TextAppearance.Compat.Notification.Info"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/linearNotificationWrap"
            android:ellipsize="marquee"
            android:maxLines="2"
            android:text="body" />

    </RelativeLayout>

    <ImageView
        android:id="@+id/notification_image"
        android:layout_width="@android:dimen/app_icon_size"
        android:layout_height="@android:dimen/app_icon_size"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_gravity="center" />
</RelativeLayout>

Неважно, что я использую в android:layout_height вид не меняется. Если я удалю DecoratedCustomViewStyle, бесполезная высота исчезнет, ​​но я хочу установить стандартные стили уведомлений.

Код для отображения уведомления:

private void sendNotification(String title, String message, int id, String uri, String channelId) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("intentUrl",uri);
        intent.setAction(Long.toString(System.currentTimeMillis()));
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        RemoteViews notificationLayout = new RemoteViews(getPackageName(), R.layout.notification_small);
        notificationLayout.setTextViewText(R.id.notification_title, title);
        notificationLayout.setTextViewText(R.id.notification_body, message);
        notificationLayout.setImageViewResource(R.id.notification_cat_icon,R.drawable.icon_push);
        notificationLayout.setImageViewResource(R.id.notification_image,R.drawable.icon_push);


        RemoteViews notificationLayoutExpanded = new RemoteViews(getPackageName(), R.layout.notification_large);
        notificationLayoutExpanded.setTextViewText(R.id.notification_title, title);
        notificationLayoutExpanded.setTextViewText(R.id.notification_body, message);
        notificationLayoutExpanded.setImageViewResource(R.id.notification_cat_icon,R.drawable.icon_push);
        notificationLayoutExpanded.setImageViewResource(R.id.notification_image,R.drawable.icon_push);

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
                .setSmallIcon(R.drawable.icon_push)
                .setAutoCancel(true)
                .setCategory(NotificationCompat.CATEGORY_MESSAGE)
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent)
                .setStyle(new NotificationCompat.DecoratedCustomViewStyle())
                .setCustomContentView(notificationLayout)
                .setCustomBigContentView(notificationLayoutExpanded);



        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(id, notificationBuilder.build());
    }

Кто-нибудь имеет подобный эффект или имеет представление о том, что происходит? Спасибо

Ответы [ 2 ]

0 голосов
/ 09 июля 2018

Textview с android: id = "@ + id /vent_body": Изменить android: layout_height = "match_parent" на android: layout_height = "wrap_content"

0 голосов
/ 09 июля 2018

Проблема решена следующим образом: Убедитесь, что ни один из дочерних элементов не имеет высоты match_parent. Фиксированная часть в примере вопроса:

<TextView
            android:id="@+id/notification_body"
            style="@style/TextAppearance.Compat.Notification.Info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/linearNotificationWrap"
            android:ellipsize="marquee"
            android:maxLines="2"
            android:text="body" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...