【问题标题】:Set theme for AppCompatButton programmatically以编程方式为 AppCompatButton 设置主题
【发布时间】:2016-06-16 13:59:00
【问题描述】:

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

为了利用 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 时如何为按钮设置主题(设置我的 AppCompatButton 的属性 app:theme),但正如我上面提到的,我需要在运行时以编程方式更改它。我该怎么做?

【问题讨论】:

  • @MojtabaAsg 您确定要更改主题吗?为什么不将按钮的颜色设置为Color State List
  • @cricket_007 不,我的问题是关于添加到 appcompatbutton 的新属性而不是旧样式!
  • @Bryan 告诉我你的方法,我可以用你的解决方案定义自定义状态和更改状态吗?

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 2020-05-31
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多