API 21之前的View.setBackgroundTintList?

时间:2017-04-10 06:52:15

标签: java android

我想更改View的Backgroundtint,这是我找到的唯一方法。但我收到一条消息,它只适用于某些API。我可以在API 15上以某种方式工作吗?或者是否有更好的方法向用户显示一个按钮被选中?

2 个答案:

答案 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" 

希望对你有所帮助!