我有一个按钮有两个状态,每个状态必须有不同的背景。
为了利用 android 默认按钮实现的优势(例如 +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 时为我的按钮设置主题(设置 AppCompatButton
的 app:theme
属性)但正如我上面提到的,我需要更改它以编程方式运行时。我该怎么做?
如果你一次只需要一种颜色(不管状态如何),你可以使用
Button button = ...;
int color = ...;
ViewCompat.setBackgroundTintList(button, ColorStateList.valueOf(color));
这将在 Lollipop 和更新的设备 (API 21+) 上保留涟漪效应
我是一名优秀的程序员,十分优秀!