Android Nexus 5中我的通知栏中的白色图标

Android Nexus 5中我的通知栏中的白色图标,android,Android,令人惊讶的是,我的应用程序图标在Nexus 5的通知栏中出现了白色图标。这仅适用于Nexus5 关于这一点已经有一个问题,答案表明我需要:目标20。我已经试过了:就像下面一样没有区别 defaultConfig { applicationId "com.cn.redquest" minSdkVersion 20 targetSdkVersion 20 versionCode 10 versionName "1.00" } 有人能帮我修一下吗 让我知

令人惊讶的是,我的应用程序图标在Nexus 5的通知栏中出现了白色图标。这仅适用于Nexus5

关于这一点已经有一个问题,答案表明我需要:目标20。我已经试过了:就像下面一样没有区别

defaultConfig 
{
    applicationId "com.cn.redquest"
    minSdkVersion 20
    targetSdkVersion 20
    versionCode 10
    versionName "1.00"
} 
有人能帮我修一下吗

让我知道


谢谢

将目标SDK设置为20意味着您不需要为Android棒棒糖构建应用程序。这将使您的通知图标显示所有颜色,但不是一个长期的解决方案,因为您将希望为棒棒糖构建(至少最终)

在这里,您可以了解到白色样式是如何在棒棒糖(SDK 21)中显示通知的。谷歌还建议使用自定义bg颜色-

我认为更好的解决方案是,如果设备运行的是安卓棒棒糖,那么为系统提供一个轮廓图标

例如:

Notification notification = new Notification.Builder(context)
   .setAutoCancel(true)
   .setContentTitle("My notification")
   .setContentText("Look, white in Lollipop, else color!")
   .setSmallIcon(getNotificationIcon())
   .build();
并且,在getNotificationIcon方法中:

private int getNotificationIcon() {
    boolean useSilhouette = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
    return useSilhouette ? R.drawable.ic_silhouette : R.drawable.ic_launcher;
}

查看
AndroidManifest.xml
。也许你需要在那里定义版本。显然是目前为止唯一的解决方案@Tushar和@ByteHamster:Manifest和build.gradle都有targetSDkVersion 20。嘿!这里的R.drawable.ic_剪影是什么?最后一行是一个检查,返回Android棒棒糖或更高版本的剪影图像。对于较旧的Android版本,将返回启动器图标。因此,R.drawable.ic_剪影是项目中可能的图像资源。你可以返回任何图像…但它应该是一个单一颜色的图像。