Java 如何以编程方式更改主屏幕小部件的形状颜色

Java 如何以编程方式更改主屏幕小部件的形状颜色,java,android,android-widget,Java,Android,Android Widget,我希望我的主屏幕小部件是一个带角的矩形,这样我就有了一个可绘制的形状。但是,纯色需要在按下按钮时更改,以匹配我的文本背景色。我可以通过以下方式更改文本背景颜色: RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); backgroundColor = colors[mCounter]; views.setInt(R.id.appwidget_text, "setBackgroundColo

我希望我的主屏幕小部件是一个带角的矩形,这样我就有了一个可绘制的形状。但是,纯色需要在按下按钮时更改,以匹配我的文本背景色。我可以通过以下方式更改文本背景颜色:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

backgroundColor = colors[mCounter];
views.setInt(R.id.appwidget_text, "setBackgroundColor", backgroundColor);
我尝试了以下方法,但没有成功:

views.setInt(R.drawable.layout_bg, "setBackgroundColor", backgroundColor);
我还尝试更改我的小部件的背景色,如下所示:

views.setInt(R.id.appwidget_layout, "setBackgroundTint", backgroundColor);
这也没有任何作用

有解决办法吗

int[] color = new int[2];
color[0] = Color.parseColor("#000000");
color[1] = Color.parseColor("#000000");

View view = new RelativeLayout(this);
GradientDrawable drawable = (GradientDrawable) view.getBackground();

drawable.setColors(color);
试试这个。对于你的问题

int[] color = new int[2];
color[0] = Color.parseColor("#000000");
color[1] = Color.parseColor("#000000");
GradientDrawable drawable = (GradientDrawable) views.getBackground();
drawable.setColors(color);

希望能有所帮助。:)

谢谢,但是getBackground()不是视图的选项(就像在远程视图中一样)。我也要试试。