如何获得自定义通知的全景图,并在保持Android系统装饰的同时占用通知的整个宽度?

时间:2019-02-22 18:45:20

标签: android notifications custom-notificaiton

我目前有一个应用程序,其最低SDK为19(KitKat)。

我需要一个同时包含BigPictureStyleBigTextStyle的通知。为此,我在DecoratedCustomViewStyle旁边使用了远程视图来获得所需的效果,但是结果是大图像并没有占据整个宽度,而是我得到了:

the big image doesn't take the whole width

问题不应该是我使用的图像大小,因为从通知生成器中删除DecoratedCustomViewStyle可以解决宽度问题,但是如果没有它,我将无法获得所有的系统装饰(请参见下图) ),而且要求也要有它们。

Image size ok, but no system decorations

我还发现Accengage's notifications templates的风格就是 BigTextBigPicture ,这正是我需要的样式,但是尽管它们提供了布局文件,但我无法让它适用于带有Nougat的手机以上,因为我得到的结果与删除DecoratedCustomViewStyle的结果相同,所以没有系统装饰。

这是通知生成器:

RemoteViews notificationLayout = new RemoteViews(getPackageName(), R.layout.notification_small);
RemoteViews notificationLayoutExpanded = new RemoteViews(getPackageName(), R.layout.notification_large);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(),
        Constants.CHANNEL_ID)
        .setSmallIcon(R.drawable.my_app_logo)
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        .setCustomContentView(notificationLayout)
        .setCustomBigContentView(notificationLayoutExpanded)
        .setStyle(new NotificationCompat.DecoratedCustomViewStyle());

这是notification_large布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="256dp"
    android:orientation="vertical">
        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:fadingEdge="horizontal"
            android:maxLines="2"
            style="@style/TextAppearance.Compat.Notification.Title"
            android:text="@string/notification_test_title"/>

        <TextView
            android:id="@+id/msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:fadingEdge="horizontal"
            android:maxLines="6"
            style="@style/TextAppearance.Compat.Notification"
            android:text="@string/notification_test_msg"/>

    <ImageView
        android:layout_marginStart="2dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/test_cute_kirby"
        android:scaleType="fitXY"/>

</LinearLayout>

0 个答案:

没有答案