代码设置Tint,Android兼容helper类的使用

图标禁用的时候变灰,然后正常的时候变黑,本来打算用selector写,但是需要俩个图标,突然想到tint,试着用代码设置tint。

就用到了DrawableCompat 这个兼容的帮助类,以前没注意到这些类,看来要了解一下。

1 首先说下DrawableCompat .setTint(),其实就是我们xml使用的tint,但是设置之后原来图标的颜色也变了,如何返回回去?原来在这个类中有俩个方法wrap和unwrap方法,其实在api源码上注释已经介绍很详细

代码设置Tint,Android兼容helper类的使用_第1张图片
源码不一定对

但是当我使用的时候,发现还是返回不到原来的颜色,然后百度了一下,发现人们都能用,这就神奇了,我开始怀疑我的代码问题,研究了一会也没问题,这时候考虑是不是版本的问题,我当前用的是android7.1的手机,继续查看源码。

代码设置Tint,Android兼容helper类的使用_第2张图片
android6.0
代码设置Tint,Android兼容helper类的使用_第3张图片
代码设置Tint,Android兼容helper类的使用_第4张图片
新的包裹类

当调用clearColorFilter,发现还是没用,这就神奇了,按理说这是常见的需求啊,我就纳闷了,我觉得还是应该答案就在DrawableCompat,接着看源码,

代码设置Tint,Android兼容helper类的使用_第5张图片
setTintList

原来如此,心中万千曹尼玛,设置个null,就能清除。

当然还有很多要研究的,比如刚才wrap方法在6.0以下是不是起作用,下班了,明天研究,就到这里。

以上有不正确的,还望见谅,请指出

你可能感兴趣的:(代码设置Tint,Android兼容helper类的使用)