我正在与FloatingActionButton
. 用户应该能够在onClick
事件中切换 FAB 背景颜色。
但是,推荐的调用setBackgroundTintList
似乎只兼容 21+ API。
我如何——正确地——在棒棒糖之前的设备上进行操作?我可以使用任何替代方法吗?
提前致谢。
我正在与FloatingActionButton
. 用户应该能够在onClick
事件中切换 FAB 背景颜色。
但是,推荐的调用setBackgroundTintList
似乎只兼容 21+ API。
我如何——正确地——在棒棒糖之前的设备上进行操作?我可以使用任何替代方法吗?
提前致谢。
你也可以使用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);
}
}
它对我有用,我希望它也对你有用。
简单的:
fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50));
fab
当然是你FloatingActionButton
的,0xFF4CAF50
只是一个示例颜色
从 XML,您可以使用
card_view:backgroundTint="@color/your_color"
card_view
在哪里xmlns:card_view="http://schemas.android.com/apk/res-auto"