我有一个应用程序显示自定义通知。问题是在Android 5中运行时,通知栏中的小图标显示为白色。我该如何解决这个问题?


当前回答

我认为现在谈论API 21已经太晚了,但我找到了一个简单的方法。

使用“自定义通知(自定义布局)”时,

RemoteView的

setImageViewResource(int viewId, int srcId);

and

setImageViewUri(int viewId, Uri uri); 

使这些图像白色的棒棒糖(API 21)。

但是当使用

setImageViewBitmap(int viewId, Bitmap bitmap);

图像不会变成白色面具!

其他回答

根据Android设计指南,你必须为builder.setSmallIcon(R.drawable.some_notification_icon);但如果你仍然想显示一个彩色的图标作为通知图标这里是窍门棒棒糖和以上使用下面的代码。largeIcon将作为一个主要的通知图标,您还需要为smallIcon提供一个剪影,因为它将显示在largeIcon的右下角。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
     builder.setColor(context.getResources().getColor(R.color.red));
     builder.setSmallIcon(R.drawable.some_notification_icon);
     builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
}

在你的构建器中只使用. setsmallicon (r. mimmap .ic_launcher)。

android:targetSdkVersion="20",它应该< 21。

供您参考:如果图标没有出现,请确保您的本地或远程通知配置包含正确的图标名称

'largeIcon' => 'ic_launcher',
'smallIcon' => 'ic_launcher' // defaults to ic_launcher, 

根据文档,从Android 3.0 (API Level 11)开始,通知图标必须是白色的:

https://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar

“状态栏图标是由透明屏幕上的白色像素组成的 背景,使用alpha混合用于光滑的边缘和内部 适当的纹理。”

我也遇到了太多的问题,但在互联网上搜索后,我找到了这个问题的不同解决方案。让我总结一下所有的解决方案并解释一下:

注意:此解决方案适用于Phonegap cordova用户

例子

<预览

您需要将android-targetSdkVersion值设置为小于21。 所以在设置这个值后,通知图标图像将出现到Android 6(棉花糖),它不会在Android 7(牛轧糖)工作。 这个解决方案对我很有效。

更改配置文件中的statusbarStyle。 例子

<预览

但这个解决方案只有在应用程序打开时才有效。 所以,我想这个解决方案不是最好的解决方案,但它适用于许多用户。

让你的图标透明。 这个方法对很多人都有效。 实际上,在本地应用程序的开发中,我们需要为他们提供三个图像: (一)应用程序图标 (b)通知图标 (c)状态栏图标图像,但在混合移动应用程序开发的情况下,没有这样做的选项。 所以让你的图标透明,这个解决方案将解决你的问题。

我相信上述解决方案之一将为您的问题工作。