我需要更改android小部件中按钮的颜色

我需要更改android小部件中按钮的颜色,android,button,colors,widget,Android,Button,Colors,Widget,我有一个带有按钮的小部件,用户必须在给定的时间间隔内按下该按钮。该按钮工作正常,并重置间隔,但我希望该按钮改变颜色绿色->琥珀色->红色取决于剩余时间。我可以使用远程视图更改按钮上的文本,代码如下: RemoteViews views =new RemoteViews(context.getPackageName(), R.layout.example_widget); views.setCharSequence(R.id.example_widget_button, "setText", bu

我有一个带有按钮的小部件,用户必须在给定的时间间隔内按下该按钮。该按钮工作正常,并重置间隔,但我希望该按钮改变颜色绿色->琥珀色->红色取决于剩余时间。我可以使用远程视图更改按钮上的文本,代码如下:

RemoteViews views =new RemoteViews(context.getPackageName(), R.layout.example_widget);
views.setCharSequence(R.id.example_widget_button, "setText", buttonText);
但我不能让任何代码改变按钮的颜色。我尝试了以下几点:

views.setCharSequence(R.id.example_widget_button, "setBackgroundTint", "#039be5");
我也尝试过使用可绘制的背景并改变它。我遗漏了一些非常明显的东西——这一定是可能的——我就是找不到一个适合我的环境的例子

有人能指给我看吗?

你可以这样做:

views.setInt(R.id.example_widget_button, "setBackgroundColor", android.graphics.Color.BLACK)`;

您可以将颜色更改为您当时想要的颜色。

您可以使用
处理程序
倒计时程序

如果要使用
处理程序
,以下是示例:

long totalTime=10000;
长警告时间=6000;
长时间=30000;
Runnable warningColorChangeRunnable=新建Runnable(){
@凌驾
公开募捐{
setBackgroundColor(getResources().getColor(R.color.colorWarning));
}
};
Runnable alertColorChangeRunnable=new Runnable(){
@凌驾
公开募捐{
setBackgroundColor(getResources().getColor(R.color.colorAlert));
}
};
最终处理程序=新处理程序();
postDelayed(warningColorChangeRunnable,totalTime-warningTime);
postDelayed(alertColorChangeRunnable,totalTime-alertTime);
setOnClickListener(新的OnClickListener(){
@覆盖公共void onClick(视图){
handler.removeCallbacks(警告ColorChangeRunnable);
handler.removeCallbacks(alertColorChangeRunnable);
}
});
如果要使用
倒计时
,以下是示例:

long totalTime=10000;
长警告时间=6000;
长时间=30000;
长间隔=1000;
倒计时计时器=新倒计时计时器(总时间,1000){
公共void onTick(长毫秒未完成){
if(毫秒直到完成警告时间-间隔){
setBackgroundColor(getResources().getColor(R.color.colorWarning));
}
if(毫秒至完成警报时间-间隔){
setBackgroundColor(getResources().getColor(R.color.colorAlert));
}
}
公共无效onFinish(){
//可能会显示一个失败对话框
}
}.start();
setOnClickListener(新的OnClickListener(){
@覆盖公共void onClick(视图){
timer.cancel();
}
});

Mohammad:谢谢你——它很有效,而且它还打开了我可以尝试的一堆其他东西。迈赫迈德:也谢谢-我已经设置好了计时器元素并开始运行,但是你也给了我思考的食物;Runnable和Handler对我来说是新的。我知道评论不应该这样使用,但我不能投票,所以这里是:O)