在任何活动的普通 Android 代码中,我可以控制背景可绘制的颜色
Drawable d = findViewById(R.id.button_highlight).getBackground();
PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
d.setColorFilter(filter);
我想知道如何在 WidgetProvider 中利用它来动态更改元素的背景可绘制对象的背景颜色
从我的 AppWidgetProvider 实例中,我想调用如下内容:
int color2 = settings.getInt("secondary_color", R.color.main_alt);
// following won't work because a <Button> has no method "setColorFilter"
remoteViews.setInt(R.id.button_highlight,"setColorFilter",color2);
id 为 R.id.highlight 的按钮的 button_bg.xml 可绘制对象如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<corners android:topRightRadius="5dp" android:bottomRightRadius="5dp"/>
<solid android:color="@color/main_alt"/>
<padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp"/>
</shape>
</item>
<item>
<shape>
<corners android:topRightRadius="5dp" android:bottomRightRadius="5dp"/>
<solid android:color="@color/main"/>
<padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp"/>
</shape>
</item>
</selector>
有什么解决方法吗?我错过了什么吗?如何更改背景可绘制对象的颜色?我正在考虑子类化 Button 并实现自定义方法来设置颜色,但我首先想知道是否有更常见或更简单的方法..