创建自定义大通知

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (33)

我想创建一个包含一些控件的通知。由于文本和控件很小,默认通知大小(64dp),因此我希望它大于默认大小。 可以创建更大的通知,我认为也可以有自定义布局,但我不知道如何。

更具体地说,下面的屏幕截图显示了来自spotify的通知(图片来自这里):

正如你所看到的,尺寸大于默认值。此外,它有一些没有文本的ImageButtons - 如果你使用Notification.Builder.addAction(),你可以提供一个图标,但也需要提供一个CharSequence作为描述 - 如果你将描述留空,仍然会有空间为文本保留,如果你传递null,它会崩溃。

任何人都可以告诉我如何使用自定义布局创建一个大通知?

提问于
用户回答回答于

由于API更改而更新:

从API 24开始,Notification.Builder包含一个setCustomBigContentView(RemoteViews) - 方法。此外,NotificationCompat.Builder(它是support.v4包的一部分)包含此方法。 请注意,NotificationCompat.Builder.setCustomBigContentView的文档声明

提供自定义RemoteViews,以代替展开形式的平台模板。这将覆盖本构建器对象构建的扩展布局。在JELLY_BEAN之前的版本上没有运行。

因此,这也只适用于API> = 16(JELLY_BEAN)。

原始答复

因此,谷歌过度使用后,我发现本教程解释了如何使用自定义大布局。诀窍不是使用,setStyle()而是手动设置构建它之后bigContentView字段。看起来有点冒险,但这是我终于想出来的: Notification

notification_layout_big.xml:

<?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="100dp" <!-- This is where I manually define the height -->
    android:orientation="horizontal" >

    <!-- some more elements.. --> 
</LinearLayout>

建立Notification在代码中:

Notification foregroundNote;

RemoteViews bigView = new RemoteViews(getApplicationContext().getPackageName(),
    R.layout.notification_layout_big);

// bigView.setOnClickPendingIntent() etc..

Notification.Builder mNotifyBuilder = new Notification.Builder(this);
foregroundNote = mNotifyBuilder.setContentTitle("some string")
        .setContentText("Slide down on note to expand")
        .setSmallIcon(R.drawable.ic_stat_notify_white)
        .setLargeIcon(bigIcon)
        .build();

foregroundNote.bigContentView = bigView;

// now show notification..
NotificationManager mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyManager.notify(1, foregroundNote);

正如chx101所指出的,这只适用于API> = 16.我没有在这个答案中提到它,但它在上面给出的链接教程中提到过:

扩展通知首先在Android 4.1 JellyBean [API 16]中引入。

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问8 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答
  • 富有想象力的人

    3 粉丝0 提问6 回答

扫码关注云+社区

领取腾讯云代金券