Android 从RemoteView调用setImageDrawable

Android 从RemoteView调用setImageDrawable,android,android-imageview,remoteview,shapedrawable,Android,Android Imageview,Remoteview,Shapedrawable,我在一次活动中做到了这一点,效果非常好 ImageView myImage = (ImageView) findViewById(R.id.myImageView); ShapeDrawable mDrawable; mDrawable = new ShapeDrawable(new OvalShape()); mDrawable.getPaint().setColor(0xff74AC23); mDrawable.setBounds(x, y, x + width, y + height)

我在一次活动中做到了这一点,效果非常好

ImageView myImage = (ImageView) findViewById(R.id.myImageView);

ShapeDrawable mDrawable;

mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
mDrawable.setIntrinsicWidth(width);
mDrawable.setIntrinsicHeight(height);

myImage.setImageDrawable(mDrawable);
现在我想在一个小部件中做同样的事情(在
onUpdate
中),我必须使用
remoteview
来访问图像


如何从
remoteview
调用
ImageView
setImageDrawable
?所有的远程视图方法似乎都采用
位图
远程视图
都是从XML资源描述符构建的。您不能使用代码来构建它们

after modify drawable :



 Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
 remoteViews.setImageViewBitmap(viewId, bitmap) .
您需要这样做:

创建布局:

<ImageView android:src="@drawable/myshapedrawable">
</ImageView>

您可以通过以下操作更改“RemoteView”中ImageView图像的颜色:

remoteviews.setInt(viewid, "setColorFilter", color);

这是否允许我在运行时更改形状颜色?我希望用户通过小部件配置活动定义颜色。是的,通过
remoteViews.setXYZ(viewId,“setColor”,value)
。为了访问它,您需要在XML中设置视图的ID。还有一个问题,它几乎可以完美地工作。我将
src
属性设置为
myshapedravable
,它工作得非常好。所以我想更改它的颜色,但我只能为
ImageView
设置一个Id,它没有
setColor
方法。如何调用src的
setColor
方法?您的意思是在drawables中为形状添加id?很遗憾,似乎不起作用。尝试编辑帖子时,颜色不正确。应该是
#ff74AC23
ShapeDrawable不能转换为BitmapDrawable。我被困在同一件事上。你能告诉我你是如何设置形状的颜色的吗。我甚至找不到
setXYZ()
。最后,我不得不一起发布一个新问题:。请看你是否能帮上忙这是正确的答案,我已经在我的视图上设置了圆角和不透明度的drawable,用这种方法我可以在圆角形状保持不变的情况下改变颜色:)效果非常好!浪费了这么多时间才找到了这个神奇而简单的解决方案(Y)。
remoteviews.setInt(viewid, "setColorFilter", color);