为什么不推荐使用getResources()。getColor(int)?

时间:2017-06-15 14:04:44

标签: android android-theme

该文件说:

  

此方法在API级别23中已弃用。使用getColor(int, Theme)   代替。

很多帖子都指出ContextCompat.getColor(Context, int)方法作为替代方法。

该文件还解释了Theme参数:

  

主题资源。主题:用于设置颜色属性样式的主题,   可能是空的。

你能解释一下主题如何影响颜色吗?

2 个答案:

答案 0 :(得分:3)

一些复杂的颜色,如android.content.res.GradientColor(在VectorDrawable中使用)需要一个主题才能使渐变膨胀,因为你可以有一个如下的定义:

<gradient xmlns:android="http://schemas.android.com/apk/res/android">
   <android:startColor="?android:attr/colorPrimary"/>
   <android:endColor="?android:attr/colorControlActivated"/>
   <android:type="linear"/>
 </gradient>

答案 1 :(得分:0)

您可以使用以下方法作为解决方法: ContextCompat.getColor(this,R.color.yourcolor)