使用: buildToolsVersion "22.0.1", targetSdkVersion 22在我的gradle文件。
我发现有用的getResources(). getcolor (R.color.color_name)已弃用。
我应该用什么代替呢?
使用: buildToolsVersion "22.0.1", targetSdkVersion 22在我的gradle文件。
我发现有用的getResources(). getcolor (R.color.color_name)已弃用。
我应该用什么代替呢?
当前回答
我发现有用的getResources(). getcolor (R.color.color_name)已弃用。
根据文档,它在API Level 21中没有被弃用。
在M开发人员预览中已弃用。但是,替换方法(一个带有两个参数的getColor(),它接受颜色资源ID和一个Resources。主题对象)仅在M开发人员预览中可用。
因此,现在继续使用单参数getColor()方法。今年晚些时候,考虑在Android M设备上使用双参数getColor()方法,在旧设备上退回到已弃用的单参数getColor()方法。
其他回答
看起来最好的方法是使用:
ContextCompat.getColor(context, R.color.color_name)
eg:
yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
R.color.colorAccent))
这将适当地选择棉花糖双参数法或预棉花糖法。
我发现有用的getResources(). getcolor (R.color.color_name)已弃用。
根据文档,它在API Level 21中没有被弃用。
在M开发人员预览中已弃用。但是,替换方法(一个带有两个参数的getColor(),它接受颜色资源ID和一个Resources。主题对象)仅在M开发人员预览中可用。
因此,现在继续使用单参数getColor()方法。今年晚些时候,考虑在Android M设备上使用双参数getColor()方法,在旧设备上退回到已弃用的单参数getColor()方法。
好吧,它在android M中被弃用了,所以你必须为android M和更低的版本例外。只需在getColor函数中添加当前主题。您可以使用getTheme()获取当前主题。
这将在片段中做的技巧,你可以用getBaseContext(), yourContext等替换getActivity(),保存你的当前上下文
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white, getActivity().getTheme()));
}else {
yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white));
}
* p。s: color在M中不支持,但drawable在L中不支持
您需要使用ContextCompat.getColor(),它是Support V4库的一部分(因此它将适用于前面的所有API)。
ContextCompat.getColor(context, R.color.my_color)
正如文档中指定的那样,“从M开始,返回的颜色将为指定上下文的主题设置样式”。所以不用担心。
你可以通过在build.gradle的依赖数组中添加以下内容来添加Support V4库:
compile 'com.android.support:support-v4:23.0.1'