我想更改View的Backgroundtint,这是我找到的唯一方法。但我收到一条消息,它只适用于某些API。我可以在API 15上以某种方式工作吗?或者是否有更好的方法向用户显示一个按钮被选中?
答案 0 :(得分:7)
ViewCompat.setBackgroundTintList()
将完成API 4。
对背景drawable应用色调。
在API v21或更高版本上运行时,这将始终生效。在API v21之前的平台上运行时,只有在View实现TintableBackgroundView接口时才会生效。
答案 1 :(得分:1)
是,
使用java代码,您可以通过以下方式更改任何视图的可绘制颜色:
public static void setIconColor(TextView tv, int which, int color) {
tv.getCompoundDrawables()[which].mutate();
tv.getCompoundDrawables()[which].setColorFilter(ContextCompat.getColor(tv.getContext(), color), PorterDuff.Mode.SRC_ATOP);
}
public static void setIconColor(ImageView imageView, int color) {
imageView.getDrawable().mutate();
imageView.getDrawable().setColorFilter(ContextCompat.getColor(imageView.getContext(), color), PorterDuff.Mode.SRC_ATOP);
}
是否已选择用户按钮?你应该使用
android:background="?attr/selectableItemBackground"
希望对你有所帮助!