Android 以编程方式设置AppCompatButton的主题

Android 以编程方式设置AppCompatButton的主题,android,android-support-library,android-appcompat,Android,Android Support Library,Android Appcompat,我有一个按钮,有两种状态,必须有不同的背景为每一个 为了使用android默认按钮实现的优势(例如+棒棒糖中的ripple effect),我没有定义自定义背景并使用colorButtonNormal属性,如下所示: <style name="PrimaryButton.Success"> <item name="colorButtonNormal">@color/colorSuccess</item> </style> <style

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

为了使用android默认按钮实现的优势(例如+棒棒糖中的ripple effect),我没有定义自定义背景并使用
colorButtonNormal
属性,如下所示:

<style name="PrimaryButton.Success">
  <item name="colorButtonNormal">@color/colorSuccess</item>
</style>

<style name="PrimaryButton.Fail">
  <item name="colorButtonNormal">@color/colorFail</item>
</style>

@色彩/色彩成功
@颜色/颜色失败

我知道如何在使用XML时为我的按钮设置主题(设置我的
AppCompatButton
app:theme
属性),但正如我上面提到的,我需要在运行时以编程方式更改它。我该怎么做呢?

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

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

这将保持棒棒糖和更新设备(API 21+)的连锁反应

可能重复@mojtabasg您确定要更改主题吗?为什么不将按钮的颜色设置为?@cricket_007不,我的问题是关于添加到appcompatbutton的新属性,而不是传统样式@Bryan让我知道您的方法,我可以用您的解决方案定义自定义状态和更改状态吗?