我曾经遇到过类似的问题。我的解决方案是使用位图。这两种方法应该能够给你答案或者至少提供某种解决方案。
private void setCurrentStatus(Context context, RemoteViews remoteViews) {
Bitmap source = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher);
Bitmap result = changeBitmapColor(source, Color.YELLOW);
remoteViews.setBitmap(R.id.iv_icon, "setImageBitmap", result);
}
private Bitmap changeBitmapColor(Bitmap sourceBitmap, int color) {
Bitmap resultBitmap = Bitmap.createBitmap(sourceBitmap, 0, 0,
sourceBitmap.getWidth() - 1, sourceBitmap.getHeight() - 1);
Paint p = new Paint();
ColorFilter filter = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN);
p.setColorFilter(filter);
Canvas canvas = new Canvas(resultBitmap);
canvas.drawBitmap(resultBitmap, 0, 0, p);
return resultBitmap;
}
R.id.iv_icon - 是布局中ImageView的id。
您可以随时从ImageView获取drawable并将其转换为位图。