使用: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)
已经被弃用。
那我应该使用什么代替呢?
看起来最好的做法是使用:
ContextCompat.getColor(context, R.color.color_name)
例如:
yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
R.color.colorAccent))
这将适当选择使用Marshmallow的两个参数方法或先前的方法。
在Android M中,它已经被弃用了,因此您必须为Android M及更低版本做出特殊处理。只需在getColor
函数上添加当前主题即可。您可以使用getTheme()
获取当前主题。
这将在片段中起作用,您可以将getActivity()
替换为getBaseContext()
、yourContext
等,这些都保存了您当前的上下文。
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:在M版本中颜色已经被弃用,但在L版本中图形已经被弃用
*p.s:color 在 M 版本中已经被废弃,但 drawable 在 L 版本中也已经被废弃。
getContext().getTheme()
代替getActivity().getTheme()
。 - Vinayak Garg你需要使用ContextCompat.getColor(),它是Support V4库的一部分(因此将适用于所有以前的API)。
ContextCompat.getColor(context, R.color.my_color)
按照文档说明,“从 M 开始,返回的颜色将为指定上下文的主题进行样式设置”。所以不用担心它。compile 'com.android.support:support-v4:23.0.1'
我发现有用的getResources().getColor(R.color.color_name)已经被弃用。
根据文档,它在API Level 21中没有被弃用。
但是,在M开发者预览版中,它被弃用了。然而,替换方法(一个两个参数的getColor()方法,它需要颜色资源ID和一个Resources.Theme对象)仅适用于M开发者预览版。
因此,现在,请继续使用单参数的getColor()方法。今年晚些时候,考虑在Android M设备上使用两个参数的getColor()方法,并在旧设备上退回到弃用的单参数getColor()方法。