2

我目前正在创建一个自定义状态栏通知,以通过事件通知用户进度。我的自定义通知工作正常,但是有一个进度条需要我通过 contentView 字段将我自己的一组 RemoteViews 传递给通知。

这很好,除了我希望能够将此布局基于默认布局。我的目标是 API 10,因此它必须与 Gingerbread 和 ICS 一起使用。Gingerbread 很好,因为我可以在布局的左侧放置一个图标,并且通知适合其他默认的。然而,在 ICS 中,通知图标在左侧都有一个包含图标的条纹方块(它有效地形成了一个 UI“句柄”,以帮助指示可以滑动通知以将其关闭)。

有谁知道我如何在代码中获取默认布局,然后对其进行编辑(这对于 remoteViews 来说很难),或者以某种方式访问​​默认布局视图(可能在运行时),然后复制它,并将通知文本替换为我的进度条?

4

2 回答 2

3

我已经看到人们创建通知并克隆布局的示例,但是要对此做任何有用的事情,您必须对布局有很多了解。我宁愿从您感兴趣的 android 版本中获取布局文件。这里有 JB 版本,找到其他版本应该没有任何问题。

于 2012-09-19T19:48:56.587 回答
0

如果您想要自定义布局的唯一原因是获得进度条,您可以查看 NotificationCompat.Builder.setProgress(). 这比使用自定义通知布局更容易。如果您决定使用自定义布局,它们在 API v14 和 API v17 之间仅略有变化,我不知道 Honeycomb 的情况,但它们不太可能有很大不同。这意味着您应该能够在 layout-v11 文件夹中使用一种自定义通知布局,在您的默认布局文件夹中使用一种,并且您将捕获大多数情况(除了 Honeycomb 向上的图标背景,我没有我还没有让那部分在我自己的自定义通知中工作)并且只需要维护两种不同的布局。默认布局的位置见上面的答案;请注意,它在早期版本的 Android 中称为 status_bar_latest_event_content.xml。

由于 setProgress() 至少可以从 Honeycomb 向上使用,并且看起来它也适用于早期版本(文档没有另外说明),那么如果您没有任何其他自定义要求,您可能应该使用它。

于 2013-05-15T21:23:26.133 回答