使用notificationCompat,您只能通过其ID设置通知的小图标,所以我一直在寻找一种解决方法,将实时温度显示为状态栏图标。
我目前正在与之合作:
LayerDrawable能够替换图层中的drawable,因此我将温度String转换为可绘制的位图并替换了图层。替换似乎工作,但原始drawable仍然显示。有什么想法吗?
Layer Drawable(我尝试过一个空白的png和一个全白色的png):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/temp_foreground">
<bitmap android:src="@drawable/blank_white"/>
</item>
</layer-list>
设置小图标:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
mBuilder.setPriority(Notification.PRIORITY_MAX);
mBuilder.setWhen(System.currentTimeMillis());
LayerDrawable ld = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.status_bar_temp);
Drawable temp = new BitmapDrawable(context.getResources(), convertTempToBitmap(StringUtils.appendDegree(getTemperature())));
boolean success = ld.setDrawableByLayerId(R.id.temp_foreground, temp);
if (success) {
ld.invalidateSelf();
mBuilder.setSmallIcon(R.drawable.status_bar_temp);
}