【问题标题】:Android: No icon for NotificationAndroid:没有通知图标
【发布时间】:2011-02-20 18:11:09
【问题描述】:

我想在状态栏中创建一个没有图标的通知(未展开的状态)。我尝试了自定义扩展视图并仅为此视图设置图标。但它没有用。当我将 0 作为图标提供给构造函数时,图标会消失,但通知也不会出现在展开的视图中。

通知通知 = new Notification(0, "", 0);

我尝试了很多组合,但没有找到解决方案。顺便说一句,我知道它正在工作,因为我在一些应用程序中看到了这个功能。谢谢。

【问题讨论】:

  • 如果你显示一个空的通知栏,用户为什么要展开它?
  • 用户将始终知道它在那里服务,但不会被图标打扰。

标签: android user-interface notifications icons


【解决方案1】:

这现在可以在 Android 4.1 中实现; Jelly Bean 状态栏的参考实现将抑制PRIORITY_MIN 通知的图标,尽管它们的内容仍会显示在通知面板中。

【讨论】:

    【解决方案2】:

    QuickSettings 做到了这一点,当我查看该代码时,我看到它使用 Notification 的默认构造函数并将其图标推送到通知栏的右侧。我认为它仍然使用空间但没有图标。

    一些代码:

    notification = new Notification();
    notification.flags |= Notification.FLAG_ONGOING_EVENT;
    notification.flags |= Notification.FLAG_NO_CLEAR;
    long hiddenTime = Constants.SDK_VERSION >= 9 ? -Long.MAX_VALUE : Long.MAX_VALUE;
    notification.when = visible ? System.currentTimeMillis() : hiddenTime; // align
    // left (0) / right (max) in status bar
    

    编辑:哦,对不起,我错过了重要的代码行,实际上他使用了占位符。但是现在你有一些代码;-)

    notification.icon = visible ? (status == Constants.STATUS_BLACK_ICON ? 
                                R.drawable.ic_logo_black : R.drawable.ic_logo_white)
                                : R.drawable.ic_placeholder;
    

    http://code.google.com/p/quick-settings/source/browse/trunk/quick-settings/src/com/bwx/bequick/receivers/StatusBarIntegrationReceiver.java

    【讨论】:

    【解决方案3】:

    您可以使用透明图像作为通知图标。但正如 molnarm 已经提到的,用户不会通知有新通知

    【讨论】:

    • 这是不可能的,即使您提供了一个 1 像素尺寸的图标。它保留应有的内容并将其显示为白色。
    • 我只是不想在那里预订一个区域。无所谓黑色、白色或透明。
    【解决方案4】:

    这里有一些东西可以试验。发出两次通知,一次是 icon=0,一次是真正的 icon。以一种顺序尝试,然后以相反的顺序尝试。

    当我做这样的事情时,我得到了状态栏中没有通知和展开列表中的通知的效果,除了两者之一(图标=0的那个)是由Service.startForeground()提出的。我现在没有时间进行更多实验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-13
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      相关资源
      最近更新 更多