创建自定义大型通知膨胀

时间:2017-02-05 12:34:18

标签: android android-notifications

我正在尝试创建一个简单的大通知,但我找不到我做错了什么。 甚至没有出现通知。

编辑:好的,我发现了一些问题,但它没有完全正常工作。 这是我用来分离lyaout(简单灰线)的View的一个问题。我删除它并将TextView更改为常规TextView,它现在显示我的布局,但它已被剪切,我无法看到所有的布局。 我使用.setCustomContentView(remoteViews)来设置rmoteView。如果我使用.setCustomBigContentView(remoteViews)它会显示空通知,而不是布局。

为什么.setCustomBigContentView(remoteViews)不起作用? 为什么我无法使用自定义TextView

这是我的简单代码:

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        RemoteViews remoteViews =  new RemoteViews(getPackageName(), R.layout.notification_add_driver_layout);
        remoteViews.setImageViewResource(R.id.notifAddDriverIcon, R.drawable.my_trips_new);

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setCustomBigContentView(remoteViews)
            .setAutoCancel(true);

    notificationManager.notify(3, builder.build());

这是我的“notification_add_driver_layout”布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="140dp">

<ImageView
    android:id="@+id/notifAddDriverIcon"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginStart="12dp"
    android:layout_marginTop="12dp"
    app:srcCompat="@drawable/my_trips_new" />

<TextView
    android:id="@+id/notifAddDriverTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/notifAddDriverIcon"
    android:layout_marginStart="21dp"
    android:layout_toEndOf="@+id/notifAddDriverIcon"
    android:text="Need to update driver details"
    android:textSize="18sp" />

<TextView
    android:id="@+id/notifAddDriverSubtitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/notifAddDriverTitle"
    android:layout_below="@+id/notifAddDriverTitle"
    android:layout_marginTop="6dp"
    android:text="From one place to another\n in sunday 05.02.2017 at 09:00" />

<!--<View-->
    <!--android:id="@+id/separator"-->
    <!--android:layout_width="match_parent"-->
    <!--android:layout_height="2dp"-->
    <!--android:layout_alignStart="@+id/notifAddDriverSubtitle"-->
    <!--android:layout_below="@+id/notifAddDriverSubtitle"-->
    <!--android:layout_marginStart="12dp"-->
    <!--android:layout_marginTop="19dp"-->
    <!--android:background="@color/chat_view_call_stroke" />-->

<RelativeLayout
    android:id="@+id/notifAddDriverButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:orientation="horizontal"
    android:layout_below="@+id/notifAddDriverSubtitle"
    android:layout_centerHorizontal="true">

    <TextView
        android:id="@+id/notifAddDriverText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginStart="17dp"
        android:layout_toEndOf="@+id/imageView4"
        android:layout_weight="1"
        android:text="update details"
        android:textSize="18sp" />

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:layout_weight="1"
        app:srcCompat="@drawable/ic_reply" />
</RelativeLayout>
</RelativeLayout>

谢谢!

2 个答案:

答案 0 :(得分:2)

必填通知内容 Notification对象必须包含以下内容:

  1. 由setSmallIcon()
  2. 设置的小图标
  3. 标题,由setContentTitle()
  4. 设置
  5. 详细文本,由setContentText()
  6. 设置

    你没有2和3。

    检查this

    编辑:

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                .setCustomBigContentView(remoteViews)
                .setContentTitle("My notification")
                .setContentText("Hello World!");
                .setAutoCancel(true);
    

    并更改自定义TextView to regular TextView`

答案 1 :(得分:1)

在我的设备(Android 6.0.1)上,它会显示,但它是白色的(背景和文字)。

white notif

如果你看得清楚,你可以看到有一些文字。

为了使其可见,我更改了背景颜色。

android:background="@color/somecolor"

在我的情况下是深蓝色。现在可见了。

visible notif