我正在使用 FloatingActionButton
。用户应该能够在onClick
事件中切换FAB背景颜色。
然而,推荐使用的setBackgroundTintList
方法似乎只兼容21+ API。
在早期版本的设备上,我应该如何正确地处理它?是否有任何替代方法可供使用?
提前致谢。
我正在使用 FloatingActionButton
。用户应该能够在onClick
事件中切换FAB背景颜色。
然而,推荐使用的setBackgroundTintList
方法似乎只兼容21+ API。
在早期版本的设备上,我应该如何正确地处理它?是否有任何替代方法可供使用?
提前致谢。
你也可以使用setSupportBackgroundTintList
方法来为背景可绘制对象着色。不会更改当前的着色模式,默认情况下为SRC_IN。
后续调用View.setBackground(Drawable)将自动变异可绘制对象并应用指定的着色和着色模式。
还要查看ViewCompat.setBackgroundTintList()
方法。
这将对背景可绘制对象进行着色。
当在API v21或更新版本上运行时,此操作始终生效。在早于API v21的平台上运行时,只有视图实现了TintableBackgroundView接口才会生效。
我在SO上找到了一个解决方案(链接),我以前使用过它:
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
只是一个示例颜色。
setBackgroundTintList()
下面,使用了不同的实现来支持早期版本。在KitKat设备上已经验证过。 - Kamil Seweryn从 XML 中,您可以使用
card_view:backgroundTint="@color/your_color"
其中 card_view
为 xmlns:card_view="http://schemas.android.com/apk/res-auto"