19

我正在与FloatingActionButton. 用户应该能够在onClick事件中切换 FAB 背景颜色。

但是,推荐的调用setBackgroundTintList似乎只兼容 21+ API。

我如何——正确地——在棒棒糖之前的设备上进行操作?我可以使用任何替代方法吗?

提前致谢。

4

3 回答 3

33

你也可以使用setSupportBackgroundTintList

将色调应用于背景可绘制对象。不修改当前的着色模式,默认为 SRC_IN。

对 View.setBackground(Drawable) 的后续调用将自动改变可绘制对象并应用指定的色调和色调模式。

也看看ViewCompat.setBackgroundTintList()

将色调应用于背景可绘制对象。

这将始终在 API v21 或更新版本上运行时生效。在 API v21 之前的平台上运行时,只有 view 实现了 TintableBackgroundView 接口才会生效。

我在这里找到了一个我以前使用过的解决方案,是这样的:

public static void setButtonTint(Button button, ColorStateList tint) {
  if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP && button instanceof AppCompatButton) {
      ((AppCompatButton) button).setSupportBackgroundTintList(tint);
  } else {
      ViewCompat.setBackgroundTintList(button, tint);
  }
}

它对我有用,我希望它也对你有用。

于 2015-11-10T22:06:11.447 回答
10

简单的:

fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50));

fab当然是你FloatingActionButton的,0xFF4CAF50只是一个示例颜色

于 2015-11-10T21:55:12.450 回答
0

从 XML,您可以使用

card_view:backgroundTint="@color/your_color"

card_view在哪里xmlns:card_view="http://schemas.android.com/apk/res-auto"

于 2018-09-13T08:30:10.987 回答