getResources().getColor() 已弃用
getResources().getColor() is deprecated
使用:
buildToolsVersion "22.0.1"
,
targetSdkVersion 22
在我的 gradle 文件中。
我发现有用的 getResources().getColor(R.color.color_name)
已被弃用。
我应该改用什么?
I found that the useful getResources().getColor(R.color.color_name) is deprecated.
,API 级别 21 未弃用它
它 在 M Developer Preview 中已弃用。但是,替换方法(采用颜色资源 ID 的双参数 getColor()
和 Resources.Theme
对象)仅在 M Developer Preview 中可用。
因此,现在继续使用单参数getColor()
方法。今年晚些时候,考虑在 Android M 设备上使用双参数 getColor()
方法,在旧设备上回退到已弃用的单参数 getColor()
方法。
看起来最好的方法是使用:
ContextCompat.getColor(context, R.color.color_name)
例如:
yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
R.color.colorAccent))
这将适当地选择Marshmallow二参数方法或pre-Marshmallow方法。
您需要使用 ContextCompat.getColor(),它是 Support V4 库的一部分(因此它适用于所有以前的 API)。
ContextCompat.getColor(context, R.color.my_color)
如文档中所述,"Starting in M, the returned color will be styled for the specified Context's theme"。所以不用担心。
您可以通过将以下内容添加到应用程序中的依赖项数组来添加 Support V4 库 build.gradle:
compile 'com.android.support:support-v4:23.0.1'
好吧,它在 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 中被弃用,但 drawable 在 L
中被弃用
使用:
buildToolsVersion "22.0.1"
,
targetSdkVersion 22
在我的 gradle 文件中。
我发现有用的 getResources().getColor(R.color.color_name)
已被弃用。
我应该改用什么?
,API 级别 21 未弃用它I found that the useful getResources().getColor(R.color.color_name) is deprecated.
它 在 M Developer Preview 中已弃用。但是,替换方法(采用颜色资源 ID 的双参数 getColor()
和 Resources.Theme
对象)仅在 M Developer Preview 中可用。
因此,现在继续使用单参数getColor()
方法。今年晚些时候,考虑在 Android M 设备上使用双参数 getColor()
方法,在旧设备上回退到已弃用的单参数 getColor()
方法。
看起来最好的方法是使用:
ContextCompat.getColor(context, R.color.color_name)
例如:
yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
R.color.colorAccent))
这将适当地选择Marshmallow二参数方法或pre-Marshmallow方法。
您需要使用 ContextCompat.getColor(),它是 Support V4 库的一部分(因此它适用于所有以前的 API)。
ContextCompat.getColor(context, R.color.my_color)
如文档中所述,"Starting in M, the returned color will be styled for the specified Context's theme"。所以不用担心。
您可以通过将以下内容添加到应用程序中的依赖项数组来添加 Support V4 库 build.gradle:
compile 'com.android.support:support-v4:23.0.1'
好吧,它在 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 中被弃用,但 drawable 在 L
中被弃用