在通知栏上显示LevelListDrawable

时间:2012-03-08 05:42:20

标签: android android-notifications android-notification-bar

我正在尝试在通知栏上显示一个图标。 该图标是LevelListDrawable,可以通过设置级别来更改内容。 问题是我无法将水平设置为通知中的图标。 我曾尝试使用“Notification.icon”和“Notification.iconLevel”,但它不起作用。

这是我的代码片段。有人能看出什么问题吗?

Notification notification = new Notification(R.drawable.ic_stat_notify, "", System.currentTimeMillis());
notification.icon = R.drawable.ic_stat_notify;
notification.iconLevel = 30;
notification.setLatestEventInfo(context, "Hello", "World", intent);
manager.notify(NOTIFICATION_ID, notification);

这是我的LevelListDrawable

?xml version="1.0" encoding="utf-8"?>
level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/ic_stat_notify_0"
        android:minLevel="0"
        android:maxLevel="9"/>
    <item android:drawable="@drawable/ic_stat_notify_10"
        android:minLevel="10"
        android:maxLevel="11"/>
    <item android:drawable="@drawable/ic_stat_notify_20"
        android:minLevel="20"
        android:maxLevel="29"/>
    <item android:drawable="@drawable/ic_stat_notify_30"
        android:minLevel="30"
        android:maxLevel="39"/>
    <item android:drawable="@drawable/ic_stat_notify_40"
        android:minLevel="40"
        android:maxLevel="49"/>
    <item android:drawable="@drawable/ic_stat_notify_50"
        android:minLevel="50"
        android:maxLevel="59"/>
    <item android:drawable="@drawable/ic_stat_notify_60"
        android:minLevel="60"
        android:maxLevel="69"/>
    <item android:drawable="@drawable/ic_stat_notify_70"
        android:minLevel="70"
        android:maxLevel="79"/>
    <item android:drawable="@drawable/ic_stat_notify_80"
        android:minLevel="80"
        android:maxLevel="89"/>
    <item android:drawable="@drawable/ic_stat_notify_90"
        android:minLevel="90"
        android:maxLevel="99"/>
    <item android:drawable="@drawable/ic_stat_notify_100"
        android:minLevel="100"
        android:maxLevel="100"/>
</level-list>

2 个答案:

答案 0 :(得分:1)

如果要在展开的通知列表中显示通知的某个图标,则应创建一个没有iconLevel的“普通”drawable通知,并且在第一次更新时,您可以设置另一个图标(ex-level ex。)并设置iconLevel。

用于更新状态栏中的图标

    notification.icon = R.drawable.ic_stat_notify;
    notification.iconLevel = 30;
    manager.notify(NOTIFICATION_ID, notification);

调用notify()使更新可见是很重要的,除非重新创建通知,否则不会更新展开列表中的图标。

答案 1 :(得分:0)

这可能与此重复: android Notification setSmallIcon with level-list

这似乎是Android中的一个错误。使用级别列表更新通知时,状态栏图标会更新,但通知下拉列表中的图标不会更新。这里有报道:http://code.google.com/p/android/issues/detail?id=43179&q=setSmallIcon&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars