在gradle文件中使用:buildToolsVersion "22.0.1"
,targetSdkVersion 22
。
我发现有用的getResources().getColor(R.color.color_name)
被弃用了。
我应该用什么来代替呢?
发布于 2015-08-25 19:00:04
看起来最好的方法是使用:
ContextCompat.getColor(context, R.color.color_name)
例如:
yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
R.color.colorAccent))
这将相应地选择Marshmallow两个参数方法或pre-Marshmallow方法。
发布于 2015-12-28 11:26:01
它在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 :在M中不推荐使用颜色,但在L中不推荐使用drawable
发布于 2015-09-11 15:53:02
您需要使用ContextCompat.getColor(),它是Support库的一部分(因此它将适用于所有以前的V4 )。
ContextCompat.getColor(context, R.color.my_color)
正如文档中所指定的,“从M开始,返回的颜色将根据指定上下文的主题设置样式”。所以不需要担心它。
您可以通过将以下内容添加到应用程序build.gradle中的依赖项数组来添加Support V4库:
compile 'com.android.support:support-v4:23.0.1'
https://stackoverflow.com/questions/31842983
复制相似问题