带有RemoteViews的Android 5+自定义通知XML布局,为ImageButton设置正确的图标色调

我的应用程序正在使用RemoteViews的自定义通知布局。

要显示文本,布局使用以下系统样式:

android:TextAppearance.Material.Notification.Title android:TextAppearance.Material.Notification

这工作正常。

但是,TextAppearance风格不能用于设置android:tint的值,所以我必须对颜色进行硬编码。

据我所知,没有特别的系统风格设置通知ImageButton色调。

硬编码颜色在当前的Android 5+系统上工作得很好,但有些用户安装自定义黑色主题的自定义ROM,通知看起来不正确,即黑色背景上的黑色图标。

有没有办法获得系统通知图标/图像button颜色,并从XML布局应用它?

或者也许有另一种方法来实现这一目标?

对不起,但根据我的知识,自定义ROM有单独的系统devise,configuration和非官方的。

所以,不支持定制ROM而不知道其devise是不可能的。 和Android API是支持官方ROM的。

希望能帮助到你!!

试试这个例子:

* Def:*

 public static Bitmap icon ; icon = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.YOUR_IMAGE); mBuilder = new NotificationCompat.Builder(this); mBuilder.setShowWhen(false); mBuilder.setDefaults(Notification.DEFAULT_ALL); mBuilder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); mBuilder.setSmallIcon(R.drawable.image1); mBuilder.setContentText("this text not visible"); mBuilder.setLargeIcon(icon); mBuilder.setPriority(Notification.PRIORITY_DEFAULT); mBuilder.setContent(contentNotifySmall); // ORI //mBuilder.setAutoCancel(false); mBuilder.setCustomBigContentView(contentNotify); 

您可以使用notificationlistenerservice获取活动通知。 这将返回StatusBarNotifications的列表,然后只是:

 StatusBarNotifcation sBNotification = activeNotifications[0]; Notification notification = sBNotification.getNotification(); int argbColor = notification.color; 

如果您在布局中将ImageButton更改为ImageView,则可以使用更新

  RemoteViews remoteView = getRemoteViews(context); // load base icon from res Bitmap baseIcon = BitmapFactory.decodeResource(context.getResources(), R.drawable.base_icon); // edit Bitmap baseIcon any way for your choose Bitmap editedBitmap = ... // update notification view with edited Bitmap remoteView.setImageViewBitmap(R.id.button_icon, edited); 

PS你可以像这样编辑位图: https : //stackoverflow.com/a/5935686/7630175或任何其他方式

希望这是帮助

为背景可以尝试这些属性…

 app:backgroundTint="@color/pay" 

– – – – -要么 – – – – – – –

 android:tint="@color/white"