使用自定义状态栏通知获取默认图标背景

时间:2012-09-14 06:15:10

标签: android android-layout

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

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

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

2 个答案:

答案 0 :(得分:3)

我见过人们创建通知并克隆布局的示例,但要做一些有用的事情,你必须对布局有很多了解。我宁愿从你感兴趣的Android版本中获取布局文件。Here你有JB的一个,你应该没有任何问题找到其他人。

答案 1 :(得分:0)

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

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