Android 棒棒糖之前的设备上的 setBackgroundTintList
Android setBackgroundTintList on pre-lollipop devices
我正在与 FloatingActionButton
合作。
用户应该能够在 onClick
事件中切换 FAB 背景颜色。
但是,建议调用 setBackgroundTintList
似乎只兼容 21+ API。
我如何 - 正确地 - 在棒棒糖之前的设备上进行操作?我可以使用其他替代方法吗?
提前致谢。
简单:
fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50));
fab
当然是你的 FloatingActionButton
而 0xFF4CAF50
只是一个示例颜色
您也可以使用 setSupportBackgroundTintList
Applies a tint to the background drawable. Does not modify the current tint mode, which is SRC_IN by default.
Subsequent calls to View.setBackground(Drawable) will automatically mutate the drawable and apply the specified tint and tint mode.
也看看 ViewCompat.setBackgroundTintList()
Applies a tint to the background drawable.
This will always take effect when running on API v21 or newer. When running on platforms previous to API v21, it will only take effect if view implement the TintableBackgroundView interface.
我找到了一个我以前用过的解决方案 是这样的:
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);
}
}
它对我有用我希望它对你也有用。
从XML开始,您可以使用
card_view:backgroundTint="@color/your_color"
其中 card_view
是 xmlns:card_view="http://schemas.android.com/apk/res-auto"
我正在与 FloatingActionButton
合作。
用户应该能够在 onClick
事件中切换 FAB 背景颜色。
但是,建议调用 setBackgroundTintList
似乎只兼容 21+ API。
我如何 - 正确地 - 在棒棒糖之前的设备上进行操作?我可以使用其他替代方法吗?
提前致谢。
简单:
fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50));
fab
当然是你的 FloatingActionButton
而 0xFF4CAF50
只是一个示例颜色
您也可以使用 setSupportBackgroundTintList
Applies a tint to the background drawable. Does not modify the current tint mode, which is SRC_IN by default.
Subsequent calls to View.setBackground(Drawable) will automatically mutate the drawable and apply the specified tint and tint mode.
也看看 ViewCompat.setBackgroundTintList()
Applies a tint to the background drawable.
This will always take effect when running on API v21 or newer. When running on platforms previous to API v21, it will only take effect if view implement the TintableBackgroundView interface.
我找到了一个我以前用过的解决方案
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);
}
}
它对我有用我希望它对你也有用。
从XML开始,您可以使用
card_view:backgroundTint="@color/your_color"
其中 card_view
是 xmlns:card_view="http://schemas.android.com/apk/res-auto"