以编程方式为AppCompatButton设置主题

时间:2016-06-16 13:59:01

标签: android android-support-library appcompat-v7-r23

我有一个按钮,它有两个状态,每个按钮必须有不同的背景。

为了利用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}}属性),但正如我上面提到的,我需要在运行时以编程方式更改它。我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

如果您一次只需要一种颜色(尽管处于状态),您可以使用

Button button = ...;
int color = ...;
ViewCompat.setBackgroundTintList(button, ColorStateList.valueOf(color));

这将保留对Lollipop和更新设备(API 21 +)的连锁反应