我有一个按钮,它有两个状态,每个按钮必须有不同的背景。
为了利用Android的默认工具Button(例如+ Lollipop中的涟漪效果)我没有定义自定义背景并使用colorButtonNormal
属性如下所示:
<style name="PrimaryButton.Success">
<item name="colorButtonNormal">@color/colorSuccess</item>
</style>
<style name="PrimaryButton.Fail">
<item name="colorButtonNormal">@color/colorFail</item>
</style>
我知道如何在使用XML时设置我的按钮的主题(设置app:theme
的{{1}}属性),但正如我上面提到的,我需要在运行时以编程方式更改它。我怎么能这样做?
答案 0 :(得分:4)
如果您一次只需要一种颜色(尽管处于状态),您可以使用
Button button = ...;
int color = ...;
ViewCompat.setBackgroundTintList(button, ColorStateList.valueOf(color));
这将保留对Lollipop和更新设备(API 21 +)的连锁反应