首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >getResources().getColor()已弃用

getResources().getColor()已弃用
EN

Stack Overflow用户
提问于 2015-08-06 05:16:20
回答 3查看 235.6K关注 0票数 505

在gradle文件中使用:buildToolsVersion "22.0.1"targetSdkVersion 22

我发现有用的getResources().getColor(R.color.color_name)被弃用了。

我应该用什么来代替呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-25 19:00:04

看起来最好的方法是使用:

代码语言:javascript
复制
ContextCompat.getColor(context, R.color.color_name)

例如:

代码语言:javascript
复制
yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
                            R.color.colorAccent))

这将相应地选择Marshmallow两个参数方法或pre-Marshmallow方法。

票数 1.1K
EN

Stack Overflow用户

发布于 2015-12-28 11:26:01

它在android M中已经被弃用了,所以你必须为android M及更低版本做个例外。只需在getColor函数上添加当前主题即可。您可以使用getTheme()获取当前主题。

这将在片段中发挥作用,您可以用保存当前上下文的getBaseContext()yourContext等替换getActivity()

代码语言:javascript
复制
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

票数 66
EN

Stack Overflow用户

发布于 2015-09-11 15:53:02

您需要使用ContextCompat.getColor(),它是Support库的一部分(因此它将适用于所有以前的V4 )。

代码语言:javascript
复制
ContextCompat.getColor(context, R.color.my_color)

正如文档中所指定的,“从M开始,返回的颜色将根据指定上下文的主题设置样式”。所以不需要担心它。

您可以通过将以下内容添加到应用程序build.gradle中的依赖项数组来添加Support V4库:

代码语言:javascript
复制
compile 'com.android.support:support-v4:23.0.1'
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31842983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档